"অ্যামিগো, আমি আশা করি এতক্ষণে আপনি বুঝতে পেরেছেন যে প্রোগ্রামিং-এ অ্যারেগুলি কতটা দরকারী?"

"অবশ্যই, ঋষি! আমি ইতিমধ্যে একাধিক কাজ সমাধান করেছি।"

"আপনার কাজের পুনরাবৃত্তিমূলক কর্ম আছে? আপনি বারবার করেছেন যে ধরনের."

"যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি, তাহলে আপনি বিভিন্ন কাজে একই ধরনের ক্রিয়া বোঝাতে চান? উদাহরণস্বরূপ, একটি অ্যারের বিষয়বস্তু প্রদর্শন করার জন্য সর্বত্র লুপ ব্যবহার করে - আমি এটি করতে খুব ক্লান্ত!"

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

"এবং বাস্তব প্রোগ্রামারদের একটি খুব গুরুত্বপূর্ণ নিয়ম আছে: নিজেকে পুনরাবৃত্তি করবেন না। আপনি সম্মত হবেন যে অতিরিক্ত কাজ করা ভুল - আপনি এটির জন্য অর্থ পাবেন না। কার্যকরী কাজের জন্য ভাল অর্থ প্রদান করা হয়, আমাকে বিশ্বাস করুন। ঘটনাক্রমে, একজন নবজাতকের কোড অবিলম্বে বৃহৎ পরিমাণ পুনরাবৃত্তি কোড দ্বারা স্বীকৃত হয়.

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

"হুম...খুব মজার। তাহলে এর ঠিক কী আছে?

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

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?]"

Arrays.deepToString()

"তবে, toString()দ্বি-মাত্রিক অ্যারেগুলির ক্ষেত্রে পদ্ধতিটি পর্যাপ্ত নয়৷ অন্য কথায়, আপনি কল করার চেষ্টা করলে Arrays.toString(), আপনি পরিচিত কিছু দেখতে পাবেন:

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

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

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

"জাভার নির্মাতারাও এটি প্রত্যাশা করেছিলেন। এই লক্ষ্যে, Arraysক্লাসের আরেকটি বিশেষ পদ্ধতি রয়েছে — deepToString()। এটিকে কল করা এইরকম দেখাচ্ছে:

String str = Arrays.deepToString(name);

"এই পদ্ধতিটি অ্যারেগুলি পাস করা যেতে পারে যা দ্বি-মাত্রিক, এক-মাত্রিক, ত্রি-মাত্রিক বা, সাধারণভাবে, যে কোনও মাত্রা এবং এটি সর্বদা অ্যারের উপাদানগুলি প্রদর্শন করবে৷

উদাহরণ:

int[] 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]], [[]]]"

Arrays.equals()

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

"আমি সাধারণত equalsপদ্ধতি ব্যবহার করি!

"হ্যাঁ, equals, এবং এছাড়াও equalsIgnoreCase(যা বড় হাতের এবং ছোট হাতের অক্ষর বিবেচনা না করে স্ট্রিং তুলনা করে)।

"সুসংবাদ: আপনি equalsঅ্যারের জন্য পদ্ধতিটিও ব্যবহার করতে পারেন৷ খারাপ খবর: এটি অ্যারের বিষয়বস্তুর তুলনা করে না৷ equalsঅ্যারের পদ্ধতিটি অপারেটরের মতো একই কাজ করে ==- এটি রেফারেন্সের তুলনা করে৷

উদাহরণ:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
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(অ্যারের বিষয়বস্তু ভিন্ন)

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(বিষয়বস্তু সমান)

"ধন্যবাদ, ঋষি! ভবিষ্যতে আমার জীবনকে আরও সহজ এবং সুখী করার জন্য এই পাঠটিই আমার দরকার ছিল৷ এখন আমি অ্যারে ক্লাসের পদ্ধতিগুলি ব্যবহার করব এবং আমার প্রোগ্রামগুলি আরও দ্রুত লিখব৷

"এটাই আমি গণনা করছিলাম, হা-হা। কিন্তু এগুলি অ্যারে ক্লাসের সব আকর্ষণীয় পদ্ধতি নয়। আমি পরের বার আপনাকে অন্যদের সম্পর্কে বলব।"