Java-তে অ্যারে (Array) হলো একই ধরনের একাধিক মান সংরক্ষণ করতে ব্যবহৃত একটি ডেটা স্ট্রাকচার। অ্যারে ব্যবহার করে আমরা একটি নির্দিষ্ট আকারের তালিকা তৈরি করতে পারি, যেখানে প্রতিটি মান একটি নির্দিষ্ট ইনডেক্স দ্বারা অ্যাক্সেস করা যায়। ইনডেক্স শূন্য (0) থেকে শুরু হয় এবং শেষ হয় অ্যারের আকার - ১ পর্যন্ত।
অ্যারে ডিক্লেয়ারেশন এবং ইনিশিয়ালাইজেশন
১. অ্যারে ডিক্লেয়ারেশন
অ্যারে ডিক্লেয়ার করার জন্য ডেটা টাইপের পরে [] চিহ্নটি ব্যবহার করা হয়।
উদাহরণ:
int[] numbers; // integer টাইপের একটি অ্যারে ডিক্লেয়ার
২. অ্যারে ইনিশিয়ালাইজেশন
অ্যারে ডিক্লেয়ার করার সময়ই আমরা মান প্রদান করতে পারি, অথবা পরে ইনিশিয়ালাইজ করতে পারি।
উদাহরণ:
// ডিক্লেয়ার এবং ইনিশিয়ালাইজ একসাথে
int[] numbers = {10, 20, 30, 40, 50};
// ডিক্লেয়ার করার পরে ইনিশিয়ালাইজ
int[] scores = new int[5]; // ৫টি ইনটিজার ধারণ করতে পারে
scores[0] = 90;
scores[1] = 85;
scores[2] = 75;
অ্যারে অ্যাক্সেস এবং পরিবর্তন
অ্যারের প্রতিটি উপাদান ইনডেক্সের মাধ্যমে অ্যাক্সেস করা যায় এবং প্রয়োজনমতো পরিবর্তন করা যায়।
উদাহরণ:
int[] numbers = {10, 20, 30, 40, 50};
// প্রথম উপাদান অ্যাক্সেস
System.out.println("First element: " + numbers[0]); // Output: 10
// তৃতীয় উপাদান পরিবর্তন
numbers[2] = 35;
System.out.println("Updated third element: " + numbers[2]); // Output: 35
অ্যারের দৈর্ঘ্য খুঁজে বের করা
অ্যারের দৈর্ঘ্য খুঁজে পেতে array.length ব্যবহার করা হয়, যা অ্যারের উপাদান সংখ্যা প্রদান করে।
উদাহরণ:
int[] numbers = {10, 20, 30, 40, 50};
System.out.println("Array length: " + numbers.length); // Output: 5
অ্যারে লুপিং (Looping Through Array)
অ্যারের প্রতিটি উপাদান অ্যাক্সেস করার জন্য আমরা for বা for-each লুপ ব্যবহার করতে পারি।
১. for লুপ ব্যবহার
int[] numbers = {10, 20, 30, 40, 50};
for (int i = 0; i < numbers.length; i++) {
System.out.println("Element at index " + i + ": " + numbers[i]);
}
আউটপুট:
Element at index 0: 10
Element at index 1: 20
Element at index 2: 30
Element at index 3: 40
Element at index 4: 50
২. for-each লুপ ব্যবহার
for-each লুপ অ্যারের প্রতিটি উপাদানকে সরাসরি অ্যাক্সেস করতে সহায়ক।
int[] numbers = {10, 20, 30, 40, 50};
for (int num : numbers) {
System.out.println("Element: " + num);
}
আউটপুট:
Element: 10
Element: 20
Element: 30
Element: 40
Element: 50
মাল্টি-ডাইমেনশনাল অ্যারে
Java তে দুই বা ততোধিক মাত্রার অ্যারে তৈরি করা যায়। সাধারণত দুই মাত্রার (2D) অ্যারে একটি ম্যাট্রিক্সের মতো কাজ করে।
২D অ্যারে ডিক্লেয়ারেশন এবং ইনিশিয়ালাইজেশন:
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// অ্যাক্সেস করতে
System.out.println("Element at [0][1]: " + matrix[0][1]); // Output: 2
২D অ্যারে লুপিং:
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();
}
আউটপুট:
1 2 3
4 5 6
7 8 9
অ্যারের সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- একাধিক উপাদান একসাথে সংরক্ষণ করা যায়।
- ইনডেক্সের মাধ্যমে দ্রুত অ্যাক্সেস করা যায়।
- একই ধরনের ডেটা ম্যানেজ করতে সুবিধাজনক।
সীমাবদ্ধতা:
- অ্যারের আকার নির্দিষ্ট হওয়ার পরে পরিবর্তন করা যায় না।
- শুধুমাত্র একই ধরনের ডেটা সংরক্ষণ করতে পারে।
সারসংক্ষেপ
Java তে অ্যারে একই ধরনের একাধিক উপাদান সংরক্ষণ করতে ব্যবহৃত হয়। প্রতিটি উপাদান ইনডেক্সের মাধ্যমে অ্যাক্সেস করা যায়। for এবং for-each লুপ ব্যবহার করে অ্যারের উপর লুপিং করা যায় এবং মাল্টি-ডাইমেনশনাল অ্যারের সাহায্যে আরও জটিল ডেটা গঠন তৈরি করা যায়।
অ্যারে (Array) হলো প্রোগ্রামিংয়ের একটি ডেটা স্ট্রাকচার, যা একই ধরনের একাধিক ডেটা একসঙ্গে সংরক্ষণ করতে ব্যবহৃত হয়। Java-তে অ্যারে একটি ধ্রুবক (fixed size) স্ট্রাকচার, যার মানে এটি তৈরি হওয়ার পর এর আকার পরিবর্তন করা যায় না। অ্যারের প্রতিটি উপাদান (element) ইনডেক্স এর মাধ্যমে চিহ্নিত করা হয় এবং প্রতিটি ইনডেক্স একটি নির্দিষ্ট ডেটা ধারণ করে।
অ্যারের বৈশিষ্ট্য
- একই ধরনের ডেটা সংরক্ষণ: অ্যারে শুধুমাত্র একই ধরনের ডেটা সংরক্ষণ করতে পারে। যেমন, সব
int, সবString, সবfloat, ইত্যাদি। - ইনডেক্সিং (Indexing): অ্যারের প্রথম উপাদান ইনডেক্স ০ থেকে শুরু হয়। ফলে অ্যারের প্রতিটি উপাদান ইনডেক্সের মাধ্যমে চিহ্নিত করা যায়।
- স্থির আকার (Fixed Size): Java-তে অ্যারের আকার তৈরি হওয়ার পর পরিবর্তন করা যায় না।
- ক্রমিক মেমোরি বরাদ্দ: অ্যারে একসঙ্গে ধারাবাহিক মেমোরি বরাদ্দ করে ডেটা সংরক্ষণ করে, যার ফলে মেমোরি ব্যবস্থাপনা সহজ হয়।
অ্যারে তৈরি করা
Java-তে অ্যারে তৈরি করতে dataType[] arrayName = new dataType[size]; সিনট্যাক্স ব্যবহার করা হয়, যেখানে:
dataType: অ্যারেতে যে ধরনের ডেটা থাকবে তার টাইপ (যেমনint,String,doubleইত্যাদি)।arrayName: অ্যারের নাম।size: অ্যারের আকার বা উপাদান সংখ্যা।
উদাহরণ:
// int টাইপের একটি অ্যারে তৈরি করা হচ্ছে যার আকার ৫
int[] numbers = new int[5];
অ্যারে ইনিশিয়ালাইজেশন (Initialization)
অ্যারে তৈরি করার সময় সরাসরি মানও অ্যাসাইন করা যায়। যেমন:
int[] numbers = {10, 20, 30, 40, 50};
এখানে numbers নামের একটি int টাইপের অ্যারে তৈরি হয়েছে, যেখানে পাঁচটি মান 10, 20, 30, 40, এবং 50 অ্যারের উপাদান হিসেবে সংরক্ষিত।
অ্যারে থেকে মান অ্যাক্সেস করা
ইনডেক্স ব্যবহার করে অ্যারের যেকোনো উপাদান অ্যাক্সেস করা যায়। উদাহরণ:
System.out.println(numbers[0]); // আউটপুট: 10
System.out.println(numbers[2]); // আউটপুট: 30
এখানে numbers[0] প্রথম উপাদান এবং numbers[2] তৃতীয় উপাদানকে নির্দেশ করছে।
অ্যারের উপাদান পরিবর্তন করা
ইনডেক্স ব্যবহার করে অ্যারের যেকোনো উপাদানের মান পরিবর্তন করা যায়। উদাহরণ:
numbers[1] = 25; // দ্বিতীয় উপাদান পরিবর্তন করে ২৫ সেট করা হচ্ছে
System.out.println(numbers[1]); // আউটপুট: 25
অ্যারে ব্যবহার করে একটি উদাহরণ প্রোগ্রাম
public class ArrayExample {
public static void main(String[] args) {
// অ্যারে ইনিশিয়ালাইজ করা
int[] marks = {85, 90, 78, 88, 76};
// অ্যারের উপাদান প্রিন্ট করা
for (int i = 0; i < marks.length; i++) {
System.out.println("Marks of subject " + (i + 1) + ": " + marks[i]);
}
// মোট যোগফল বের করা
int sum = 0;
for (int i = 0; i < marks.length; i++) {
sum += marks[i];
}
System.out.println("Total Marks: " + sum);
// গড় বের করা
double average = (double) sum / marks.length;
System.out.println("Average Marks: " + average);
}
}
ব্যাখ্যা:
- এখানে
marksনামের একটিintটাইপের অ্যারে তৈরি করা হয়েছে, যেখানে পাঁচটি সাবজেক্টের নম্বর সংরক্ষিত আছে। - প্রথম
forলুপের মাধ্যমে প্রতিটি নম্বর প্রিন্ট করা হচ্ছে। sumভেরিয়েবলের মাধ্যমে মোট নম্বর যোগফল বের করা হচ্ছে।- শেষ লাইনগুলোতে
averageহিসাব করা হচ্ছে এবং আউটপুটে গড় নম্বর দেখানো হচ্ছে।
অ্যারের গুরুত্বপূর্ণ পয়েন্ট
arrayName.length: অ্যারের উপাদান সংখ্যা বের করতে length প্রপার্টি ব্যবহার করা হয়। এটি অ্যারের দৈর্ঘ্য প্রদান করে।
ইনডেক্স আউট অফ বাউন্ডস: যদি ইনডেক্স অ্যারের আকারের বাইরে থাকে (যেমন, numbers[10] যখন অ্যারের আকার ৫), তবে ArrayIndexOutOfBoundsException ত্রুটি প্রদর্শিত হবে।
বহুমাত্রিক অ্যারে (Multidimensional Array): Java-তে দুই বা ততোধিক মাত্রার অ্যারে তৈরি করা যায়। উদাহরণস্বরূপ, দুই মাত্রার অ্যারে:
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
সারসংক্ষেপ
- অ্যারে হলো একই ধরনের ডেটা সংরক্ষণে ব্যবহৃত একটি ডেটা স্ট্রাকচার, যা স্থির আকারের।
- অ্যারের প্রথম ইনডেক্স
0এবং সর্বশেষ ইনডেক্সlength - 1হয়। - ইনডেক্সের মাধ্যমে অ্যারের মান অ্যাক্সেস ও পরিবর্তন করা যায়।
অ্যারে ব্যবহার করে সহজেই একাধিক উপাদান একত্রে সংরক্ষণ করা যায়, যা ডেটা ম্যানেজমেন্ট এবং অ্যাক্সেস সহজ করে তোলে।
Java তে এক মাত্রা (One-Dimensional) এবং একাধিক মাত্রার (Multi-Dimensional) অ্যারে ডেটা সংরক্ষণ ও অ্যাক্সেসের ক্ষেত্রে ভিন্ন ভিন্ন প্রয়োজন পূরণ করে। সাধারণত, একমাত্রিক অ্যারে একটি সরল তালিকা বা লাইন আকারে ডেটা ধারণ করে, যেখানে একাধিক মাত্রার অ্যারে একটি গ্রিড বা ম্যাট্রিক্স আকারে ডেটা সংরক্ষণ করে।
এক মাত্রার অ্যারে (One-Dimensional Array)
এক মাত্রার অ্যারে একটি সরল রেখার মতো ডেটা ধারণ করে এবং ইনডেক্সের মাধ্যমে প্রতিটি উপাদান অ্যাক্সেস করা যায়। এটি একটি তালিকার মতো কাজ করে।
ডিক্লেয়ারেশন এবং ইনিশিয়ালাইজেশন
একটি একমাত্রিক অ্যারে ডিক্লেয়ার করার সময় ডেটা টাইপের পরে [] চিহ্ন ব্যবহার করা হয়।
উদাহরণ:
int[] numbers = {10, 20, 30, 40, 50};
অ্যারে অ্যাক্সেস এবং পরিবর্তন
ইনডেক্স ব্যবহার করে প্রতিটি উপাদান অ্যাক্সেস বা পরিবর্তন করা যায়।
উদাহরণ:
System.out.println("First element: " + numbers[0]); // Output: 10
numbers[2] = 35;
System.out.println("Updated third element: " + numbers[2]); // Output: 35
লুপিং
for এবং for-each লুপ ব্যবহার করে একমাত্রিক অ্যারের উপর লুপিং করা যায়।
উদাহরণ:
for (int num : numbers) {
System.out.println("Element: " + num);
}
একাধিক মাত্রার অ্যারে (Multi-Dimensional Array)
একাধিক মাত্রার অ্যারে, সাধারণত ২ মাত্রার অ্যারে একটি ম্যাট্রিক্স বা গ্রিড আকারে ডেটা ধারণ করে, যেখানে প্রতিটি উপাদানের জন্য দুইটি ইনডেক্স থাকে।
ডিক্লেয়ারেশন এবং ইনিশিয়ালাইজেশন
২ মাত্রার অ্যারে ডিক্লেয়ার করতে [][] ব্যবহার করা হয়।
উদাহরণ:
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
অ্যারে অ্যাক্সেস এবং পরিবর্তন
প্রথম ইনডেক্স সারি (row) এবং দ্বিতীয় ইনডেক্স কলাম (column) নির্দেশ করে।
উদাহরণ:
System.out.println("Element at [0][1]: " + matrix[0][1]); // Output: 2
matrix[1][2] = 10;
System.out.println("Updated element at [1][2]: " + matrix[1][2]); // Output: 10
লুপিং
for লুপ ব্যবহার করে প্রতিটি সারি এবং কলামের উপর লুপিং করা যায়।
উদাহরণ:
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();
}
আউটপুট:
1 2 3
4 5 10
7 8 9
একাধিক মাত্রার অ্যারের আরো উদাহরণ
একাধিক মাত্রার অ্যারে শুধু দুই মাত্রায় সীমাবদ্ধ নয়; তিন বা ততোধিক মাত্রার অ্যারে তৈরি করা সম্ভব, তবে ব্যবহার এবং অ্যাক্সেসের জন্য এটি জটিল হয়ে যায়।
তিন মাত্রার অ্যারে উদাহরণ:
int[][][] threeDArray = {
{
{1, 2, 3},
{4, 5, 6}
},
{
{7, 8, 9},
{10, 11, 12}
}
};
System.out.println("Element at [1][0][2]: " + threeDArray[1][0][2]); // Output: 9
পার্থক্য: একমাত্রিক বনাম একাধিক মাত্রার অ্যারে
| বৈশিষ্ট্য | এক মাত্রার অ্যারে | একাধিক মাত্রার অ্যারে |
|---|---|---|
| স্ট্রাকচার | সরল তালিকা বা একক সারি | ম্যাট্রিক্স বা গ্রিড আকারে |
| ইনডেক্সের সংখ্যা | এক ইনডেক্স যথেষ্ট | প্রতিটি উপাদানের জন্য একাধিক ইনডেক্স প্রয়োজন |
| ব্যবহার | তালিকা, সিম্পল ডেটা লিস্ট | টেবিল বা গ্রিড আকারে ডেটা সংরক্ষণ করতে |
| লুপিং | সাধারণ for বা for-each লুপ | nested লুপ (একটি লুপের ভিতরে আরেকটি লুপ) |
সারসংক্ষেপ
Java তে একমাত্রিক অ্যারে একটি সরল ডেটা তালিকা সংরক্ষণ করে, যেখানে একাধিক মাত্রার অ্যারে একটি ম্যাট্রিক্স বা গ্রিড আকারে ডেটা সংরক্ষণ করে। একমাত্রিক অ্যারে ইনডেক্স ব্যবহার করে সরাসরি অ্যাক্সেসযোগ্য এবং সহজ, তবে একাধিক মাত্রার অ্যারে আরো জটিল ডেটা গঠন তৈরি করতে সহায়ক।
অ্যারের সাথে লুপ ব্যবহার করা হয় অ্যারের প্রতিটি উপাদান সহজে এবং দ্রুত অ্যাক্সেস বা পরিবর্তন করার জন্য। লুপের মাধ্যমে অ্যারের প্রতিটি উপাদান একের পর এক অ্যাক্সেস বা প্রসেস করা যায়। সাধারণত for লুপ বা for-each লুপ অ্যারের সাথে বেশি ব্যবহৃত হয়।
১. for লুপ ব্যবহার করে অ্যারের উপাদান অ্যাক্সেস করা
for লুপ ব্যবহার করে আমরা অ্যারের প্রতিটি উপাদান ইনডেক্সের মাধ্যমে অ্যাক্সেস করতে পারি।
উদাহরণ
java
Copy code
public class ArrayWithLoop {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
// for লুপ ব্যবহার করে প্রতিটি উপাদান প্রিন্ট করা
for (int i = 0; i < numbers.length; i++) {
System.out.println("Element at index " + i + ": " + numbers[i]);
}
}
}
আউটপুট:
Element at index 0: 10
Element at index 1: 20
Element at index 2: 30
Element at index 3: 40
Element at index 4: 50
ব্যাখ্যা:
- এখানে
numbers.lengthঅ্যারের দৈর্ঘ্য প্রদান করে, যা লুপটি চালানোর জন্য ব্যবহার করা হয়েছে। forলুপেiইনডেক্সের মাধ্যমে প্রতিটি উপাদান অ্যাক্সেস করে প্রিন্ট করা হয়েছে।
২. for-each লুপ ব্যবহার করে অ্যারের উপাদান অ্যাক্সেস করা
Java তে for-each লুপ (বা এনহ্যান্সড for লুপ) ব্যবহার করে অ্যারের প্রতিটি উপাদান আরও সহজে অ্যাক্সেস করা যায়। এই লুপটি ইনডেক্সিং ছাড়াই প্রতিটি উপাদান সরাসরি অ্যাক্সেস করতে সাহায্য করে।
উদাহরণ
public class ArrayWithForEach {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
// for-each লুপ ব্যবহার করে প্রতিটি উপাদান প্রিন্ট করা
for (int num : numbers) {
System.out.println("Element: " + num);
}
}
}
আউটপুট:
Element: 10
Element: 20
Element: 30
Element: 40
Element: 50
ব্যাখ্যা:
- এখানে
for-eachলুপেnumনামের একটি ভেরিয়েবল ব্যবহার করা হয়েছে যা প্রতিটি ইটারেশনে অ্যারের একেকটি উপাদান ধারণ করে। numএর মাধ্যমে প্রতিটি উপাদান প্রিন্ট করা হয়েছে।
অ্যারের সাথে লুপ ব্যবহার করে অন্যান্য কাজ
১. অ্যারের উপাদানগুলোর যোগফল বের করা
public class ArraySum {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
System.out.println("Total Sum: " + sum);
}
}
আউটপুট:
Total Sum: 150
২. অ্যারের সর্বোচ্চ মান খুঁজে বের করা
public class ArrayMax {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
System.out.println("Maximum Value: " + max);
}
}
আউটপুট:
Maximum Value: 50
৩. অ্যারের গড় মান বের করা
public class ArrayAverage {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
int sum = 0;
for (int num : numbers) {
sum += num;
}
double average = (double) sum / numbers.length;
System.out.println("Average Value: " + average);
}
}
আউটপুট:
Average Value: 30.0
সারসংক্ষেপ
forলুপ: ইনডেক্সের মাধ্যমে প্রতিটি উপাদান অ্যাক্সেস ও পরিবর্তন করতে ব্যবহৃত হয়।for-eachলুপ: ইনডেক্স ছাড়াই সরাসরি প্রতিটি উপাদান অ্যাক্সেস করতে ব্যবহার করা যায়, যা সাধারণ অ্যাক্সেসের জন্য সহজ।- অ্যারের সাথে লুপ ব্যবহার: যোগফল, গড়, সর্বোচ্চ বা সর্বনিম্ন মান বের করার মতো কাজ সহজ করে।
অ্যারের সাথে লুপ ব্যবহার করে সহজে এবং দ্রুত ডেটা প্রসেস করা যায়, যা প্রোগ্রামের কার্যক্ষমতা এবং প্রোগ্রামিং অভিজ্ঞতা উন্নত করে।
Read more