java.util.Arrays ক্লাসটি Java-তে arrays পরিচালনা করার জন্য একটি utility ক্লাস, যা অ্যারে অপারেশনগুলির জন্য অনেক উপকারী মেথড সরবরাহ করে। এটি arrays এর সাথে কাজ করার সময় সাধারণত প্রয়োজনীয় বিভিন্ন কাজ যেমন sorting, searching, copying, filling, comparison, ইত্যাদি সম্পাদন করতে সাহায্য করে।
এটি arrays এর উপর অত্যন্ত কার্যকরী এবং বহুল ব্যবহৃত ক্লাস, যা অ্যারে ডেটা স্ট্রাকচারের বিভিন্ন ধরনের অপারেশন সহজ করে তোলে।
Arrays ক্লাসের প্রাথমিক বৈশিষ্ট্য:
- Array Creation:
Arraysক্লাস সরাসরি অ্যারে তৈরি করার কাজ করেনা, তবে এটি অ্যারে ব্যবহারের জন্য বিভিন্ন ফাংশন সরবরাহ করে যেমন sorting, searching, copying, এবং filling ইত্যাদি।
- Array Operations:
Arraysক্লাস আপনাকে অ্যারে অপারেশনগুলির জন্য বিভিন্ন ফাংশন সরবরাহ করে যেমন:- Sorting (
sort()মেথড) - Searching (
binarySearch()মেথড) - Filling (
fill()মেথড) - Copying (
copyOf()মেথড) - Comparison (
equals()মেথড) - Converting to String representation (
toString()মেথড)
- Sorting (
- No Instantiation:
Arraysক্লাসটি একটি utility ক্লাস, তাই এটি instantiate করা যায় না। এর সব মেথড static (স্ট্যাটিক) হিসেবে কাজ করে।
java.util.Arrays Utility ক্লাসের কিছু সাধারণ মেথড:
sort():- একটি অ্যারে সজ্জিত (sorted) করতে ব্যবহৃত হয়।
Example:
import java.util.Arrays; public class ArraysSortExample { public static void main(String[] args) { int[] numbers = {5, 3, 8, 1, 2}; Arrays.sort(numbers); System.out.println("Sorted Array: " + Arrays.toString(numbers)); } }Output:
Sorted Array: [1, 2, 3, 5, 8]binarySearch():- এটি একটি sorted অ্যারে তে একটি নির্দিষ্ট মান খুঁজে বের করতে ব্যবহৃত হয়।
Example:
import java.util.Arrays; public class BinarySearchExample { public static void main(String[] args) { int[] numbers = {1, 2, 3, 5, 8}; int index = Arrays.binarySearch(numbers, 5); System.out.println("Index of 5: " + index); } }Output:
Index of 5: 3fill():- অ্যারে এর সব উপাদানকে একে একে নির্দিষ্ট মান দিয়ে পূর্ণ (fill) করতে ব্যবহৃত হয়।
Example:
import java.util.Arrays; public class ArraysFillExample { public static void main(String[] args) { int[] numbers = new int[5]; Arrays.fill(numbers, 10); // Filling the array with 10 System.out.println("Filled Array: " + Arrays.toString(numbers)); } }Output:
Filled Array: [10, 10, 10, 10, 10]copyOf():- একটি অ্যারের কপি তৈরি করতে ব্যবহৃত হয়। এটি অ্যারের নির্দিষ্ট অংশ কপি করতে সক্ষম।
Example:
import java.util.Arrays; public class ArraysCopyExample { public static void main(String[] args) { int[] numbers = {1, 2, 3, 4, 5}; int[] copiedNumbers = Arrays.copyOf(numbers, 3); // Copying first 3 elements System.out.println("Copied Array: " + Arrays.toString(copiedNumbers)); } }Output:
Copied Array: [1, 2, 3]equals():- দুটি অ্যারের মধ্যে সমতা (equality) পরীক্ষা করতে ব্যবহৃত হয়। এটি true ফেরত দেয় যদি দুটি অ্যারের উপাদান এবং আকার একে অপরের সমান হয়।
Example:
import java.util.Arrays; public class ArraysEqualsExample { public static void main(String[] args) { int[] array1 = {1, 2, 3}; int[] array2 = {1, 2, 3}; boolean isEqual = Arrays.equals(array1, array2); System.out.println("Arrays are equal: " + isEqual); } }Output:
Arrays are equal: truetoString():- অ্যারের string representation পাওয়ার জন্য ব্যবহৃত হয়। এটি অ্যারের সমস্ত উপাদানকে একটি স্ট্রিং আকারে প্রদর্শন করে।
Example:
import java.util.Arrays; public class ArraysToStringExample { public static void main(String[] args) { int[] numbers = {1, 2, 3, 4, 5}; System.out.println("Array as String: " + Arrays.toString(numbers)); } }Output:
Array as String: [1, 2, 3, 4, 5]asList():- একটি অ্যারে থেকে একটি List তৈরি করতে ব্যবহৃত হয়।
Example:
import java.util.Arrays; import java.util.List; public class ArraysAsListExample { public static void main(String[] args) { String[] array = {"Apple", "Banana", "Orange"}; List<String> list = Arrays.asList(array); System.out.println("List from Array: " + list); } }Output:
List from Array: [Apple, Banana, Orange]
Arrays ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
| Method | Description |
|---|---|
sort(T[] a) | অ্যারের উপাদানগুলি সজ্জিত (sorted) করে। |
binarySearch(T[] a, T key) | একটি sorted অ্যারে তে নির্দিষ্ট উপাদান খুঁজে বের করে। |
fill(T[] a, T val) | অ্যারের সমস্ত উপাদানকে একটি নির্দিষ্ট মান দিয়ে পূর্ণ করে। |
copyOf(T[] a, int newLength) | একটি অ্যারের কপি তৈরি করে এবং প্রয়োজনীয় আকারে সেটি পরিবর্তন করে। |
equals(Object[] a, Object[] b) | দুটি অ্যারের মধ্যে সমতা পরীক্ষা করে। |
toString(T[] a) | অ্যারের স্ট্রিং রিপ্রেজেন্টেশন প্রদান করে। |
asList(T... a) | একটি অ্যারে থেকে List তৈরি করে। |
java.util.Arrays ক্লাসটি arrays এর সাথে কাজ করার জন্য একটি অত্যন্ত গুরুত্বপূর্ণ utility ক্লাস, যা অ্যারে অপারেশন যেমন sorting, searching, copying, filling, এবং comparison ইত্যাদি সহজে এবং দ্রুত করার জন্য অনেক শক্তিশালী মেথড সরবরাহ করে। এটি ArrayList এবং অন্যান্য List কোলেকশনের মতো List ইন্টারফেসের সাথে কাজ করতে সহায়তা করে। Arrays ক্লাসের মেথডগুলো static হওয়ায়, এগুলি সরাসরি ক্লাস থেকে কল করা যেতে পারে, যার ফলে অ্যারে সম্পর্কিত বিভিন্ন কাজ দ্রুত এবং কার্যকরভাবে করা সম্ভব।
java.util.Arrays ক্লাসটি Java Collections Framework এর একটি গুরুত্বপূর্ণ অংশ যা array সম্পর্কিত বিভিন্ন utility মেথড সরবরাহ করে। এটি array manipulation (অ্যারে ম্যানিপুলেশন), sorting, searching, copying এবং অন্যান্য কার্যাবলী সহজে করতে সহায়তা করে। Arrays ক্লাসে থাকা কিছু গুরুত্বপূর্ণ মেথডের মধ্যে sort(), binarySearch(), এবং copyOf() ব্যবহৃত হয় অ্যারে সাজানো, অনুসন্ধান এবং কপি করার জন্য।
এই মেথডগুলো ব্যবহার করা খুবই সহজ এবং এগুলোর মাধ্যমে কোডের কার্যকারিতা অনেক বাড়ানো যায়।
1. Arrays.sort()
sort() মেথডটি array এর উপাদানগুলোকে সাজানোর জন্য ব্যবহৃত হয়। এটি ascending order (ছোট থেকে বড়) অনুযায়ী অ্যারে সাজাতে পারে। Arrays.sort() মেথডে অ্যারের এলিমেন্টের প্রকারভেদ অনুসারে বিভিন্ন ভার্সন রয়েছে (যেমন primitive types এবং objects এর জন্য আলাদা আলাদা ব্যবহার)।
Syntax:
public static void sort(int[] a)
Usage:
- Primitive Types (যেমন int, double, ইত্যাদি) এর জন্য সরাসরি
sort()মেথড ব্যবহার করা হয়। - Object Types (যেমন String, Custom Objects) এর জন্য
compareTo()মেথডটি ব্যবহার করা হয়।
Example:
import java.util.Arrays;
public class ArraysSortExample {
public static void main(String[] args) {
int[] numbers = {5, 2, 8, 1, 3};
// Sorting the array in ascending order
Arrays.sort(numbers);
System.out.println("Sorted Array: " + Arrays.toString(numbers));
}
}
Output:
Sorted Array: [1, 2, 3, 5, 8]
ব্যাখ্যা:
Arrays.sort()মেথডটি int[] অ্যারে সাজানোর জন্য ব্যবহৃত হয়েছে এবং এটি ascending order অনুযায়ী সাজিয়েছে।
2. Arrays.binarySearch()
binarySearch() মেথডটি সাজানো অ্যারের মধ্যে একটি নির্দিষ্ট মান খুঁজে বের করার জন্য ব্যবহৃত হয়। এই মেথডটি binary search অ্যালগরিদম অনুসরণ করে, যা O(log n) সময়ে কাজ করে, অর্থাৎ এটি দ্রুত অনুসন্ধান করতে সহায়তা করে।
Syntax:
public static int binarySearch(int[] a, int key)
Usage:
binarySearch()মেথডটি সাজানো অ্যারে এবং একটি খোঁজার মান নেবে এবং যদি মানটি অ্যারে তে থাকে তবে এটি ঐ মানের ইনডেক্স ফেরত দেবে।- যদি মানটি অ্যারে তে না থাকে, তাহলে negative index ফেরত দেবে।
Example:
import java.util.Arrays;
public class ArraysBinarySearchExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 5, 8};
// Searching for an element in the sorted array
int index = Arrays.binarySearch(numbers, 5);
if (index >= 0) {
System.out.println("Element found at index: " + index);
} else {
System.out.println("Element not found.");
}
}
}
Output:
Element found at index: 3
ব্যাখ্যা:
binarySearch()মেথডটি ascending order অনুযায়ী সাজানো অ্যারের মধ্যে 5 খুঁজে পেয়েছে এবং এর ইনডেক্স ৩ ফেরত দিয়েছে।
3. Arrays.copyOf()
copyOf() মেথডটি একটি অ্যারের কপি তৈরি করতে ব্যবহৃত হয়। এটি একটি নতুন অ্যারে তৈরি করে এবং পুরনো অ্যারের এলিমেন্টগুলো নতুন অ্যারেতে কপি করে। এই মেথডের মাধ্যমে আপনি অ্যারের সাইজও পরিবর্তন করতে পারেন।
Syntax:
public static int[] copyOf(int[] original, int newLength)
Usage:
copyOf()মেথডের মাধ্যমে আপনি একটি অ্যারে কপি করতে পারবেন এবং নতুন সাইজের অ্যারে তৈরি করতে পারবেন।newLengthযদি পুরনো অ্যারের সাইজের চেয়ে বড় হয়, তবে নতুন অ্যারে অতিরিক্ত এলিমেন্টগুলো default value দিয়ে পূর্ণ হয়ে যাবে।
Example:
import java.util.Arrays;
public class ArraysCopyOfExample {
public static void main(String[] args) {
int[] original = {1, 2, 3, 4, 5};
// Copying the original array with a new size (bigger size)
int[] copiedArray = Arrays.copyOf(original, 7);
System.out.println("Original Array: " + Arrays.toString(original));
System.out.println("Copied Array: " + Arrays.toString(copiedArray));
}
}
Output:
Original Array: [1, 2, 3, 4, 5]
Copied Array: [1, 2, 3, 4, 5, 0, 0]
ব্যাখ্যা:
copyOf()মেথডটি original অ্যারের কপি তৈরি করেছে এবং নতুন সাইজ 7 নির্ধারণ করেছে। নতুন অ্যারের অতিরিক্ত স্থানগুলি default value হিসেবে 0 পূর্ণ হয়েছে।
Additional Features and Methods in Arrays Class:
toString():- অ্যারের উপাদানগুলিকে স্ট্রিং হিসেবে প্রদর্শন করার জন্য ব্যবহৃত হয়।
System.out.println(Arrays.toString(numbers));equals():- দুটি অ্যারের উপাদানগুলি সমান কিনা তা চেক করতে ব্যবহৃত হয়।
boolean isEqual = Arrays.equals(arr1, arr2);fill():- একটি অ্যারের সব উপাদানকে নির্দিষ্ট মান দিয়ে পূর্ণ করে।
Arrays.fill(numbers, 5);asList():- অ্যারের উপাদানগুলোকে List-এ রূপান্তরিত করে।
List<Integer> list = Arrays.asList(numbers);
Arrays ক্লাস Java.util প্যাকেজের গুরুত্বপূর্ণ একটি অংশ যা অ্যারে সম্পর্কিত কার্যাবলী সহজে সম্পাদন করতে সহায়তা করে। এর মধ্যে sort(), binarySearch(), এবং copyOf() মেথডগুলি প্রধান।
sort()মেথডের মাধ্যমে অ্যারে সাজানো যায়।binarySearch()মেথডের মাধ্যমে সাজানো অ্যারে থেকে দ্রুত অনুসন্ধান করা সম্ভব।copyOf()মেথডের মাধ্যমে অ্যারের কপি তৈরি এবং সাইজ পরিবর্তন করা যায়।
এই মেথডগুলো array manipulation এর কাজকে দ্রুত এবং সহজ করে তোলে, যা Java প্রোগ্রামিংয়ে বিভিন্ন ক্ষেত্রে ব্যবহৃত হতে পারে।
Java.util প্যাকেজে Arrays এবং List দুটি অত্যন্ত গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, তবে তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। উভয়ই সংগ্রহ (collection) বা ডেটা সংগ্রহের জন্য ব্যবহৃত হয়, তবে তাদের কাজের পদ্ধতি, সাইজ, এবং পরিচালনার ক্ষেত্রে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে। এই লেখায় আমরা Arrays এবং List এর মধ্যে পার্থক্যগুলো আলোচনা করব।
1. Basic Definition:
- Array: একটি Array একটি নির্দিষ্ট আকারের ডেটা স্ট্রাকচার যা এক ধরনের ডেটা (যেমন, সবগুলো ইন্টিজার, স্ট্রিং ইত্যাদি) ধারণ করতে পারে। একবার আকার নির্ধারণ করার পর, এটি পরিবর্তন করা যায় না (যদি না আপনি নতুন একটি অ্যারে তৈরি করেন)।
- List:
Listহচ্ছে Java Collections Framework এর একটি ইন্টারফেস, যাArrayList,LinkedList,Vectorইত্যাদি বাস্তবায়ন দ্বারা প্রয়োগ করা হয়। এটি ডাইনামিক ডেটা স্ট্রাকচার, যা এলিমেন্টগুলিকে সাজিয়ে রাখে এবং এর সাইজ পরিবর্তনযোগ্য (আপনি নতুন উপাদান যোগ বা বাদ দিতে পারেন)।
2. Size and Flexibility:
- Array:
- Fixed Size: অ্যারে তৈরি করার সময় আপনি এর আকার নির্ধারণ করেন এবং একবার তৈরি হলে তার আকার পরিবর্তন করা যায় না। মানে, যদি আপনি একটি অ্যারে 10 উপাদান ধারণ করতে তৈরি করেন, তবে এটি পরবর্তীতে 11 বা 12 উপাদান ধারণ করতে পারবেন না।
- Static: একবার অ্যারে তৈরি হলে তার আকার স্থির থাকে এবং তাকে পুনরায় রিসাইজ করা সম্ভব নয়।
- List:
- Dynamic Size:
Listহলো একটি ডাইনামিক ডেটা স্ট্রাকচার, যার আকার চলার সময় বাড়ানো বা ছোটানো যায়। আপনি যখন চান তখন নতুন উপাদান যোগ করতে বা বাদ দিতে পারেন। - Resizable: আপনি যেমন নতুন উপাদান যোগ করেন, তেমনি মুছে ফেলতে পারেন এবং
Listস্বয়ংক্রিয়ভাবে তার আকার সমন্বয় করে।
- Dynamic Size:
3. Type of Elements:
- Array:
- Homogeneous (একই ধরনের ডেটা): অ্যারেতে সমস্ত উপাদান একই ধরনের হতে হবে। যেমন, আপনি শুধুমাত্র
intটাইপের ডেটা একটি অ্যারেতে রাখতে পারেন, অথবা শুধুমাত্রStringটাইপের ডেটা রাখতে পারেন।
- Homogeneous (একই ধরনের ডেটা): অ্যারেতে সমস্ত উপাদান একই ধরনের হতে হবে। যেমন, আপনি শুধুমাত্র
- List:
- Homogeneous or Heterogeneous: List বিভিন্ন ধরনের ডেটা রাখার সুযোগ প্রদান করে। সাধারণত
List<String>,List<Integer>এর মতো ডেটা টাইপ নির্দিষ্ট করা হয়, তবে আপনি generic টাইপের জন্য সাদৃশ্য করতে পারেন এবং heterogeneous ডেটা (অর্থাৎ বিভিন্ন টাইপের ডেটা) রাখতে পারেন।
- Homogeneous or Heterogeneous: List বিভিন্ন ধরনের ডেটা রাখার সুযোগ প্রদান করে। সাধারণত
4. Performance:
- Array:
- Faster Access: অ্যারে O(1) টাইম কমপ্লেক্সিটিতে দ্রুত অ্যাক্সেস প্রদান করে, কারণ এটি ইনডেক্স বেসড ডেটা স্ট্রাকচার। আপনি একটি নির্দিষ্ট ইনডেক্সের উপাদান দ্রুত পেতে পারেন।
- Fixed Size: একবার অ্যারে তৈরি হলে তার সাইজ অপরিবর্তনীয় হওয়ায় এটি স্থির, তাই কিছু ক্ষেত্রে List এর তুলনায় কম অপারেশন পারফর্ম করতে পারে (যেমন, উপাদান মুছে ফেলা বা যুক্ত করা)।
- List:
- Flexible but Slower:
Listএকটি ডাইনামিক সাইজের ডেটা স্ট্রাকচার, তাই অ্যারে অ্যাক্সেসের তুলনায় কিছুটা ধীর হতে পারে, তবে এটি উপাদান যুক্ত বা মুছে ফেলার জন্য আরও সুবিধাজনক। সাধারণতArrayListএর O(n) টাইম কমপ্লেক্সিটি থাকতে পারে যখন মুছে ফেলা বা ইনসার্ট করার কাজটি মাঝখানে হয়।
- Flexible but Slower:
5. Memory Usage:
- Array:
- Less Memory: অ্যারে সাধারণত কম মেমরি ব্যবহার করে, কারণ এটি নির্দিষ্ট সাইজের এবং উপাদানগুলোর এক ধরনের ডেটা ধারণ করতে সক্ষম। এর অতিরিক্ত মেমরি প্রয়োজন হয় না।
- List:
- More Memory:
ListযেমনArrayListবাLinkedListকিছু অতিরিক্ত মেমরি ব্যবহার করে, কারণ এতে সাধারণত একটি অ্যারে বা লিঙ্কড লিস্ট ব্যবহার করা হয় যার সাথে অতিরিক্ত মেমরি ব্যবহৃত হয়।
- More Memory:
6. Methods and Operations:
- Array:
- Limited Methods: অ্যারে সরাসরি কিছু সাধারণ অপারেশন যেমন get(), set(), length (অ্যারেটির সাইজ) ব্যবহার করতে পারে। তবে এটি সরাসরি add(), remove() ইত্যাদি অপারেশন সমর্থন করে না।
- List:
- Rich Set of Methods:
Listঅনেক ধরণের মেথড সরবরাহ করে যেমন add(), remove(), contains(), size(), get(), set() এবং আরও অনেক কিছু, যা এটি অনেক বেশি নমনীয় এবং শক্তিশালী করে তোলে।
- Rich Set of Methods:
7. Flexibility with Null Values:
- Array:
- Null Allowed: অ্যারেতে null মান রাখতে পারেন যদি এটি একটি রেফারেন্স টাইপের অ্যারে (যেমন,
String[],Object[]) হয়, তবে primitive types (যেমন,int[],char[]) এ null রাখার কোনো সুযোগ নেই।
- Null Allowed: অ্যারেতে null মান রাখতে পারেন যদি এটি একটি রেফারেন্স টাইপের অ্যারে (যেমন,
- List:
- Null Allowed:
List-এ আপনি null মান রাখার জন্য কোনো বাধা পাবেন না।ArrayListএবংLinkedList-এ আপনি null উপাদান রাখতে পারেন, তবে কিছু ক্ষেত্রে (যেমনMapএ null কী বা মান) কিছু বিশেষ কনস্ট্রেইন্ট থাকতে পারে।
- Null Allowed:
8. Examples of Usage:
Array Example:
public class ArrayExample {
public static void main(String[] args) {
int[] numbers = new int[5]; // Create an array of size 5
numbers[0] = 10;
numbers[1] = 20;
// Accessing array elements
System.out.println("First element: " + numbers[0]);
}
}
List Example:
import java.util.ArrayList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
// Accessing List elements
System.out.println("First element: " + numbers.get(0));
}
}
Summary:
| Attribute | Array | List |
|---|---|---|
| Size | Fixed size | Dynamic size |
| Access Type | Indexed (Direct access) | Indexed (via methods like get(), set()) |
| Duplicates | No restriction, but generally homogeneous types | Allows duplicates, supports generics |
| Memory Usage | More memory efficient | Requires extra memory due to dynamic resizing |
| Performance | Faster for fixed-size operations (static) | Slower for resizing, better for dynamic data |
| Common Operations | Limited (e.g., set, get, length) | Richer API (add, remove, contains, etc.) |
| Null Handling | Can hold null in reference types | Can hold null in all types |
- Arrays: বেশি উপযুক্ত যখন আপনি একটি স্থির, অপরিবর্তনীয় ডেটা স্ট্রাকচার চান এবং দ্রুত অ্যাক্সেস প্রয়োজন। এটি কম মেমরি ব্যবহার করে এবং ফিক্সড সাইজের জন্য উপযুক্ত।
- List: ডাইনামিক সাইজ এবং লুকানো অপারেশনগুলোর জন্য বেশি উপযুক্ত। যদি ডেটা স্ট্রাকচারের আকার পরিবর্তন করতে হয়, বা উপাদানগুলি জোড়া/মুছে ফেলা প্রয়োজন হয়, তবে List ব্যবহার করা উত্তম। List সরবরাহ করে add(), remove(), contains() এর মতো সুবিধাগুলো।
এখন আপনি নিজের প্রোগ্রামে Arrays এবং Lists ব্যবহারের সিদ্ধান্ত নিতে পারবেন, আপনার প্রয়োজন অনুসারে কোনটি উপযুক্ত।
Arrays.asList() একটি স্ট্যাটিক মেথড যা Java.util.Arrays ক্লাসে পাওয়া যায়। এটি একটি অ্যারের উপাদানগুলিকে একটি List তে রূপান্তর করে। এই মেথডটি খুবই কার্যকরী, বিশেষত যখন আপনি একটি array এর উপাদানগুলি List হিসেবে ব্যবহার করতে চান, যাতে আপনি List এর সুবিধাগুলো যেমন dynamic size এবং List ইন্টারফেসের মেথড ব্যবহার করতে পারেন।
তবে, একটি গুরুত্বপূর্ণ বিষয় হল যে Arrays.asList() মেথডের মাধ্যমে যেটি তৈরি হয় তা একটি fixed-size list হয়, অর্থাৎ আপনি সেই List এর আকার পরিবর্তন করতে পারবেন না (যেমন, উপাদান যোগ বা মুছে ফেলা), তবে আপনি উপাদানগুলোকে পরিবর্তন (set) করতে পারবেন।
Arrays.asList() এর মাধ্যমে Array থেকে List তৈরি করার উদাহরণ
ব্যবহার:
Arrays.asList() মেথড ব্যবহার করে একটি Array থেকে List তৈরি করা।
উদাহরণ:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListExample {
public static void main(String[] args) {
// একটি অ্যারে তৈরি করা
String[] fruitsArray = {"Apple", "Banana", "Cherry", "Date"};
// Arrays.asList() এর মাধ্যমে অ্যারে থেকে List তৈরি করা
List<String> fruitsList = Arrays.asList(fruitsArray);
// List এর উপাদানগুলোর উপর পুনরাবৃত্তি (iteration) করা
System.out.println("Fruits List:");
for (String fruit : fruitsList) {
System.out.println(fruit);
}
// List এর মধ্যে একটি উপাদান পরিবর্তন করা
fruitsList.set(1, "Blueberry"); // Banana কে Blueberry তে পরিবর্তন করা
System.out.println("\nUpdated Fruits List:");
for (String fruit : fruitsList) {
System.out.println(fruit);
}
// List এর আকার পরিবর্তন করতে চেষ্টা করলে UnsupportedOperationException হবে
// fruitsList.add("Elderberry"); // Uncommenting this line will throw an exception
}
}
Output:
Fruits List:
Apple
Banana
Cherry
Date
Updated Fruits List:
Apple
Blueberry
Cherry
Date
ব্যাখ্যা:
Arrays.asList()মেথড ব্যবহার করেfruitsArrayঅ্যারে থেকে একটি List তৈরি করা হয়েছে।set()মেথডের মাধ্যমে List এর একটি উপাদান পরিবর্তন করা হয়েছে (যেমন, Banana কে Blueberry দিয়ে প্রতিস্থাপন করা হয়েছে)।- তবে,
Listএর আকার পরিবর্তন করা সম্ভব নয়। আপনি যদিadd()বাremove()মেথড ব্যবহার করার চেষ্টা করেন, তবেUnsupportedOperationExceptionঘটবে, কারণArrays.asList()মেথডের মাধ্যমে তৈরি করা List একটি fixed-size list।
Arrays.asList() এর বৈশিষ্ট্য:
- Fixed Size List: এটি একটি fixed-size list তৈরি করে, যার মানে হল যে add(), remove() বা clear() মেথড কাজ করবে না। তবে আপনি
set()মেথড ব্যবহার করে উপাদান পরিবর্তন করতে পারবেন। Backed by the Original Array: এটি মূলত অ্যারের সাথে সংযুক্ত থাকে, যার মানে হল যে যদি আপনি List এর উপাদান পরিবর্তন করেন, তাহলে মূল অ্যারেও পরিবর্তন হবে। তবে, অ্যারের আকার পরিবর্তন সম্ভব নয়।
String[] fruitsArray = {"Apple", "Banana", "Cherry"}; List<String> fruitsList = Arrays.asList(fruitsArray); fruitsList.set(0, "Orange"); // মূল অ্যারের মধ্যে পরিবর্তনও দেখা যাবে System.out.println("Updated Array: " + Arrays.toString(fruitsArray));Output:
Updated Array: [Orange, Banana, Cherry]- Supports Collection Operations: এটি List ইন্টারফেসের সমস্ত ফিচার সমর্থন করে, যেমন
get(),size(),contains(),indexOf()ইত্যাদি।
Arrays.asList() এর ব্যবহার এবং সীমাবদ্ধতা:
ব্যবহার:
- Fixed Size Lists: যখন আপনাকে একটি fixed-size list দরকার, যেমন একটি অ্যারের উপাদানগুলির ওপর কাজ করা, এবং আপনি ঐ উপাদানগুলো পরিবর্তন করতে চান কিন্তু অ্যারের আকার পরিবর্তন করতে চান না।
- Converting Arrays to List: যদি আপনার কাছে একটি অ্যারে থাকে এবং সেটিকে List এ রূপান্তর করতে চান।
সীমাবদ্ধতা:
- Fixed Size:
Arrays.asList()এর মাধ্যমে তৈরি করা List এর আকার পরিবর্তন করা সম্ভব নয়। - Unsupported Operations:
add(),remove()ইত্যাদি মেথড সমর্থন করে না, কারণ এটি একটি fixed-size list। - Backed by Original Array: এটি মূল অ্যারের সাথে সম্পর্কিত থাকে, তাই মূল অ্যারের উপাদান পরিবর্তন করলে List-এও তা পরিবর্তিত হবে।
Arrays.asList() হল একটি সহজ এবং কার্যকরী উপায় যা একটি Array কে একটি List তে রূপান্তরিত করতে ব্যবহার করা হয়। এটি List এর ফিচারগুলির মধ্যে কিছু সুবিধা যেমন random access প্রদান করে, তবে fixed-size list হওয়ায় কিছু সীমাবদ্ধতা রয়েছে, যেমন add(), remove() ইত্যাদি মেথড ব্যবহার করা সম্ভব নয়। Arrays.asList() মূলত তখন উপকারী, যখন আপনি অ্যারের উপাদানগুলির সাথে দ্রুত কাজ করতে চান কিন্তু অ্যারের আকার পরিবর্তন করতে চান না।
Java এ multi-dimensional arrays একটি বিশেষ ধরনের array যা একাধিক ডাইমেনশনে (dimension) উপাদান ধারণ করতে সক্ষম। এটি মূলত একটি array যার মধ্যে আরো অন্য array থাকে। Arrays.deepToString() মেথড ব্যবহার করা হয় যখন multi-dimensional arrays বা nested arrays এর উপাদানগুলোকে স্ট্রিং ফর্ম্যাটে প্রিন্ট করতে হয়। এটি সাধারণ Arrays.toString() থেকে আলাদা, কারণ deepToString() nested arrays বা multi-dimensional arrays এর সব উপাদানকে স্ট্রিং আউটপুটে দেখতে সহায়তা করে।
1. Multi-dimensional Arrays in Java
Multi-dimensional arrays হল অ্যারের একটি কাঠামো যেখানে প্রতিটি উপাদান আবার একটি অ্যারে হতে পারে। সাধারণত, 2D array, 3D array, অথবা আরও বড় সংখ্যক dimension ব্যবহার করা হয়।
Syntax:
dataType[][] arrayName;
এখানে dataType হচ্ছে উপাদানের টাইপ (যেমন int, String ইত্যাদি), এবং arrayName হলো অ্যারের নাম। দুইটি ডাইমেনশনের অ্যারে তৈরির জন্য দুইটি কৌণিক বন্ধনীর (square brackets) ব্যবহার হয়।
উদাহরণ: 2D Array
public class MultiDimensionalArrayExample {
public static void main(String[] args) {
// 2D Array Declaration
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// Printing the 2D Array using nested loops
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println(); // Move to the next line
}
}
}
Output:
1 2 3
4 5 6
7 8 9
ব্যাখ্যা:
- এখানে
matrixএকটি 2D অ্যারে যা তিনটি সারি (rows) এবং তিনটি কলাম (columns) ধারণ করে। - নেস্টেড লুপের মাধ্যমে আমরা matrix এর সব উপাদান প্রিন্ট করেছি।
2. Arrays.deepToString() Method
Arrays.deepToString() মেথডটি ব্যবহার করা হয় multi-dimensional arrays বা nested arrays-এর সব উপাদান স্ট্রিং আকারে দেখানোর জন্য। এটি একাধিক স্তরের অ্যারে (যেমন 2D, 3D arrays) এর ক্ষেত্রে Arrays.toString() এর চেয়ে আরও কার্যকর, কারণ এটি nested arrays এর ভিতরের উপাদানগুলোও সঠিকভাবে স্ট্রিং আকারে রেন্ডার করে।
Syntax:
Arrays.deepToString(Object[] array);
এটি একটি Object array গ্রহণ করে এবং একটি স্ট্রিং রিটার্ন করে যা সেই অ্যারের উপাদানগুলিকে প্রতিনিধিত্ব করে।
উদাহরণ:
import java.util.Arrays;
public class DeepToStringExample {
public static void main(String[] args) {
// 2D Array Declaration
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// Printing the 2D Array using Arrays.deepToString
System.out.println("2D Array using deepToString: " + Arrays.deepToString(matrix));
}
}
Output:
2D Array using deepToString: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
ব্যাখ্যা:
Arrays.deepToString()মেথডটি matrix নামক 2D অ্যারেটি প্রিন্ট করেছে এবং এর প্রতিটি উপাদান সঠিকভাবে স্ট্রিং আকারে দেখিয়েছে, যেখানে প্রত্যেকটি সাব-অ্যারে (যেমন{1, 2, 3},{4, 5, 6}ইত্যাদি) একটি এলিমেন্ট হিসেবে দেখানো হয়েছে।
3. More Examples of deepToString with Multi-dimensional Arrays
3.1. 3D Array Example
import java.util.Arrays;
public class DeepToString3DArray {
public static void main(String[] args) {
// 3D Array Declaration
int[][][] cube = {
{
{1, 2},
{3, 4}
},
{
{5, 6},
{7, 8}
}
};
// Printing the 3D Array using Arrays.deepToString
System.out.println("3D Array using deepToString: " + Arrays.deepToString(cube));
}
}
Output:
3D Array using deepToString: [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
ব্যাখ্যা:
cubeএকটি 3D অ্যারে, যেখানে প্রথমে 2D অ্যারে রয়েছে এবং সেগুলো আবার 1D অ্যারে ধারণ করছে।Arrays.deepToString()মেথডের মাধ্যমে এই 3D অ্যারের সব উপাদান স্ট্রিং আকারে রেন্ডার করা হয়েছে।
4. Practical Example: Data Management with Multi-dimensional Arrays and deepToString
ধরা যাক, আমরা একটি 3D array ব্যবহার করে একটি শিক্ষার্থীর পরীক্ষার ফলাফল সংরক্ষণ করছি, যেখানে প্রতিটি শিক্ষার্থী একাধিক বিষয়ের জন্য পরীক্ষার ফলাফল দিয়েছে।
import java.util.Arrays;
public class StudentGradesExample {
public static void main(String[] args) {
// 3D Array Declaration (Students x Subjects x Grades)
int[][][] grades = {
{
{85, 90, 88}, // Student 1: Subject 1, 2, 3 grades
{92, 94, 89} // Student 1: Subject 4, 5, 6 grades
},
{
{78, 80, 85}, // Student 2: Subject 1, 2, 3 grades
{88, 91, 87} // Student 2: Subject 4, 5, 6 grades
}
};
// Printing the 3D Array using Arrays.deepToString
System.out.println("Students' Grades: " + Arrays.deepToString(grades));
}
}
Output:
Students' Grades: [[[85, 90, 88], [92, 94, 89]], [[78, 80, 85], [88, 91, 87]]]
ব্যাখ্যা:
- এখানে
gradesএকটি 3D অ্যারে, যেখানে প্রথম ডাইমেনশন শিক্ষার্থীদের প্রতিনিধিত্ব করছে, দ্বিতীয় ডাইমেনশন বিভিন্ন বিষয় এবং তৃতীয় ডাইমেনশন সেই বিষয়ে পাওয়া গ্রেড। Arrays.deepToString()মেথড ব্যবহার করে, এই 3D অ্যারের সমস্ত উপাদান সঠিকভাবে প্রিন্ট করা হয়েছে।
- Multi-dimensional arrays Java-তে বিভিন্ন ডাইমেনশনে ডেটা সংরক্ষণ করতে ব্যবহৃত হয়, যেমন 2D array, 3D array ইত্যাদি।
Arrays.deepToString()মেথড multi-dimensional arrays বা nested arrays এর উপাদানগুলোকে সঠিকভাবে স্ট্রিং আকারে প্রদর্শন করতে সহায়তা করে।- এটি একটি শক্তিশালী উপায় যখন আপনার কাজ করতে হয় অনেক স্তরের অ্যারে (যেমন 2D, 3D arrays) এবং আপনি সেগুলির উপাদানগুলি একসাথে স্ট্রিং আউটপুটে দেখতে চান।
Read more