1. Arraysক্লাস

যেমনটি আমরা আগে উল্লেখ করেছি, অ্যারেগুলি একটি খুব দরকারী এবং প্রায়শই প্রোগ্রামিংয়ে ব্যবহৃত হয়।

জাভা এর নির্মাতারা খুব দ্রুত লক্ষ্য করেছেন যে অ্যারেগুলির সাথে কাজ করার সময় জাভা প্রোগ্রামাররা প্রায়শই একই কোড লেখেন। উদাহরণস্বরূপ, একটি অ্যারের অংশ অন্য অ্যারেতে অনুলিপি করুন, একটি অ্যারের প্রতিটি ঘরকে একই মান দিয়ে পূরণ করার জন্য কোড, একটি সুবিধাজনক বিন্যাসে একটি অ্যারের বিষয়বস্তু প্রদর্শন করুন ইত্যাদি।

এই কারণেই তারা বিশেষ Arraysশ্রেণী তৈরি করেছে (এর পুরো নাম হল java.util.Arrays), এটিতে সর্বাধিক জনপ্রিয় অ্যারে-সম্পর্কিত ক্রিয়াগুলি রেখে।

প্রতিটি অনুষ্ঠানের জন্য এটিতে প্রচুর পদ্ধতি রয়েছে, তবে প্রথমে আমরা সেগুলির মধ্যে মাত্র 10টি বিবেচনা করব — সবচেয়ে সহজ এবং প্রায়শই ব্যবহৃত।


2.Arrays.toString()

প্রথম পদ্ধতিটি আমরা দেখব বলা হয় Arrays.toString()। কিন্তু প্রথম, একটু পটভূমি.

জাভাতে প্রতিটি অ্যারের একটি toString()পদ্ধতি রয়েছে, যা 'অ্যারের পাঠ্য উপস্থাপনা' প্রদান করে। আপনি নিম্নলিখিত বিবৃতি ব্যবহার করে একটি অ্যারের একটি পাঠ্য উপস্থাপনা পেতে পারেন:

String str = name.toString();

যেখানে nameঅ্যারের ভেরিয়েবলের নাম, এবং strএটি ভেরিয়েবলের নাম যা অ্যারের স্ট্রিং উপস্থাপনা সংরক্ষণ করবে।

কিন্তু আপনি যদি পদ্ধতিটি ব্যবহার করে অ্যারেটিকে স্ক্রিনে প্রিন্ট করার চেষ্টা করেন , তাহলে আপনি সম্ভবত এরকম কিছু দেখতে পাবেন:System.out.println(name)

I@37afeb11

প্রথম অক্ষরটির Iঅর্থ হল এটি একটি intঅ্যারে, এবং এর পরে চিহ্নগুলি@ মেমরিতে অ্যারের ঠিকানা। একদিকে, এটি সঠিকভাবে অ্যারে ভেরিয়েবলে সংরক্ষিত তথ্য, কিন্তু অন্য দিকে, আমরা ভিন্ন কিছু আশা করেছিলাম, তাই না?

আমরা অ্যারের মান দেখতে চেয়েছিলাম! এবং ঠিক এই কারণেই তারা পদ্ধতিটি নিয়ে এসেছে Arrays.toString()- একটি অ্যারের মান প্রদর্শন করার জন্য। আমরা এটিকে এভাবে বলি:

String str = Arrays.toString(name);

উদাহরণ:

int[] array = {1, 2, 3};
String str = Arrays.toString(array);
ভেরিয়েবলটিতে strস্ট্রিং থাকবে:
"[1, 2, 3]"
int[] array = {};
String str = Arrays.toString(array);
ভেরিয়েবলটিতে strস্ট্রিং থাকবে:
"[]"
String[] array = {"Hi", "How's", "life?"};
String str = Arrays.toString(array);
ভেরিয়েবলটিতে strস্ট্রিং থাকবে:
"[Hi, How's, life?]"


3.Arrays.deepToString()

কিন্তু আপনি যদি একটি দ্বি-মাত্রিক অ্যারেকে একটি স্ট্রিং (এটি প্রদর্শন করতে) using the Arrays.toString()পদ্ধতিতে রূপান্তর করার চেষ্টা করেন, আপনি পরিচিত কিছু দেখতে পাবেন:

[I@37afeb11, I@37afeb21, I@37afeb31]

এই সব কারণ একটি দ্বি-মাত্রিক অ্যারের কোষগুলি এক-মাত্রিক অ্যারের উল্লেখ করে। এবং কিভাবে এক-মাত্রিক অ্যারে একটি স্ট্রিং রূপান্তরিত হয়? ঠিক যেমন আপনি উপরে দেখেন।

কি করা যেতে পারে? কিভাবে আমরা সঠিকভাবে একটি দ্বি-মাত্রিক অ্যারে প্রদর্শন করব?

এই লক্ষ্যে, Arraysক্লাসের আরেকটি বিশেষ পদ্ধতি রয়েছে — deepToString(). কল করা এই মত দেখায়:

String str = Arrays.deepToString(name);

এই পদ্ধতিটি অ্যারে পাস করা যেতে পারে যা দ্বি-মাত্রিক, এক-মাত্রিক, ত্রি-মাত্রিক বা, সাধারণভাবে, যেকোনো মাত্রা এবং এটি সর্বদা অ্যারের উপাদানগুলি প্রদর্শন করবে।
দ্রষ্টব্য: পদ্ধতিটি Arrays.deepToString()আদিমগুলির এক-মাত্রিক অ্যারেগুলির সাথে কাজ করে না (উদাহরণস্বরূপ, int[])।

উদাহরণ:

Integer[] array = {1, 2, 3};
String str = Arrays.deepToString(array);
ভেরিয়েবলটিতে strস্ট্রিং থাকবে:
"[1, 2, 3]"
int[][] array = { {1, 1}, {2, 2}, {3, 3} };
String str = Arrays.deepToString(array);
ভেরিয়েবলটিতে strস্ট্রিং থাকবে:
"[[1, 1], [2, 2], [3, 3]]"
int[][][] array = { {{1, 2, 3}, {1}}, {{}} };
String str = Arrays.deepToString(array);
ভেরিয়েবলটিতে strস্ট্রিং থাকবে:
"[[[1, 2, 3], [1]], [[]]]"


4.Arrays.equals()

আমরা স্ক্রিনে অ্যারেগুলি কীভাবে প্রদর্শন করতে হয় তা খুঁজে বের করেছি, তবে অ্যারেগুলির তুলনা করার বিষয়ে কী?

স্ট্রিং তুলনা করতে, আমাদের আছে equalsএবং equalsIgnoreCaseপদ্ধতি, কিন্তু অ্যারে কি পদ্ধতি আছে?

ভাল খবর হল যে অ্যারেগুলির একটি equalsপদ্ধতি রয়েছে। খারাপ খবর হল যে এটি অ্যারের বিষয়বস্তুর তুলনা করে না। অ্যারের পদ্ধতি অপারেটরের equalsমতো একই কাজ করে ==— এটি রেফারেন্সের তুলনা করে। উদাহরণ:

উদাহরণ:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
boolean b = x1 == x2;


false(রেফারেন্স সমান নয়)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
পদ্ধতিটি সহজভাবে দুটি অ্যারের রেফারেন্স তুলনা করে equals। (রেফারেন্স সমান নয়) arrays

false

কি করা যেতে পারে? কিভাবে আমরা তাদের বিষয়বস্তু উপর ভিত্তি করে অ্যারে তুলনা?

এবং আবার Arraysআমাদের উদ্ধারে আসে, বা আরও নির্দিষ্টভাবে, এর Arrays.equals()পদ্ধতি। আমরা এটিকে এভাবেই বলি:

Arrays.equals(name1, name2)

trueযদি অ্যারে সমান দৈর্ঘ্যের হয় এবং তাদের উপাদানগুলি সমান হয় তবে পদ্ধতিটি ফিরে আসে । অন্যথায়, এটি ফিরে আসে false

উদাহরণ:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
পদ্ধতিটি সহজভাবে দুটি অ্যারের রেফারেন্স তুলনা করে equals। (রেফারেন্স সমান নয়) arrays

false
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
Arrays.equals(x1, x2);


true(বিষয়বস্তু সমান)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3, 4};
Arrays.equals(x1, x2);


false(অ্যারের বিষয়বস্তু ভিন্ন)

5.Arrays.deepEquals()

এবং, আপনি সম্ভবত ইতিমধ্যে অনুমান করেছেন, Arrays.equalsপদ্ধতিটি দ্বি-মাত্রিক অ্যারেগুলির জন্য সঠিকভাবে কাজ করবে না: এটি দ্বি-মাত্রিক অ্যারেকে এক-মাত্রিক অ্যারের মতো আচরণ করে যার উপাদানগুলি এক-মাত্রিক অ্যারের ঠিকানা।

সুতরাং, সঠিকভাবে বহুমাত্রিক অ্যারে ( n = 1, 2, 3,...) তুলনা করার জন্য, তারা পদ্ধতিটি নিয়ে এসেছে Arrays.deepEquals()। কল করা এই মত দেখায়:

Arrays.deepEquals(name1, name2)

পদ্ধতি ফিরে আসেtrueযদি অ্যারে সমান দৈর্ঘ্যের হয় এবং তাদের উপাদানগুলি সমান হয়। অন্যথায়, এটি ফিরে আসেfalse. যদি অ্যারের ভিতরের উপাদানগুলিও অ্যারে হয়, তবে Arrays.deepEquals()তাদের তুলনা করার জন্য পদ্ধতিটি ব্যবহার করা হয়, ইত্যাদি।

উদাহরণ:

int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};
x1.equals(x2);
পদ্ধতিটি সহজভাবে দুটি অ্যারের রেফারেন্স তুলনা করে equals। (রেফারেন্স সমান নয়) arrays

false
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};
Arrays.equals(x1, x2);
পদ্ধতিটি Arrays.equalsতুলনা করবে এবং এক-মাত্রিক অ্যারে হিসাবে যা রেফারেন্স সংরক্ষণ করে। তারা বিভিন্ন রেফারেন্স ধারণ করে. (অ্যারের বিষয়বস্তু সমান নয়) x1x2
false
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};
Arrays.deepEquals(x1, x2);


true(বিষয়বস্তু সমান)