একটি 2D অ্যারে অনুলিপি করার সমস্যার সমাধান একটি 1D অ্যারে অনুলিপি করার মতো সহজ নয় কারণ কেবল অভ্যন্তরীণ অ্যারেগুলির রেফারেন্সগুলি অনুলিপি করা সাব্যারেগুলির গভীর অনুলিপি তৈরি করবে না। এই সমস্যাটি সমাধান করার জন্য বেশ কয়েকটি পন্থা রয়েছে, এবং আমরা এই ধরনের একটি পদ্ধতি সম্পর্কে বিস্তারিত আলোচনা করব, কোডের একটি ধাপে ধাপে পরীক্ষা এবং এর বাস্তবায়ন।
প্রথমে, আসুন একটি ফাংশন তৈরি করি যা একটি 2D অ্যারে অনুলিপি করে:
পাবলিক স্ট্যাটিক int[][] copy2DArray(int[][] original) {
int[][] কপি = নতুন int[original.length][];
জন্য (int i = 0; i < original.length; i++) { copy[i] = Arrays.copyOf(original[i], original[i].length); } রিটার্ন কপি; } [/code] উপরের কোডে, আমরা `copy2DArray` নামক একটি ফাংশনকে সংজ্ঞায়িত করে শুরু করি যা একটি 2D পূর্ণসংখ্যা অ্যারে নেয়, যার নাম **অরিজিনাল**, এর প্যারামিটার হিসেবে। ফাংশনটি সংজ্ঞায়িত করার পরে, আমরা একটি নতুন 2D অ্যারে তৈরি করি, যাকে বলা হয় **কপি**, মূল অ্যারের মতো একই দৈর্ঘ্য সহ। তারপরে আমরা আসল অ্যারের উপাদানগুলির মাধ্যমে পুনরাবৃত্তি করার জন্য একটি লুপ ব্যবহার করি এবং `java.util.Arrays` লাইব্রেরি থেকে `Arrays.copyOf()` পদ্ধতি ব্যবহার করে নতুন অ্যারেতে অনুলিপি করি। এই পদ্ধতিটি সাবারেগুলির একটি গভীর অনুলিপি তৈরি করে। অবশেষে, আমরা 2D অ্যারের কপি ফেরত দিই।
2D অ্যারে বোঝা
জাভাতে, একটি **2D অ্যারে** মূলত অ্যারের একটি অ্যারে। এটি সারি এবং কলাম সহ একটি টেবিল হিসাবে কল্পনা করা যেতে পারে। উপাদান দুটি সূচক ব্যবহার করে অ্যাক্সেস করা যেতে পারে: একটি সারির জন্য এবং অন্যটি কলামের জন্য। জাভাতে 2D অ্যারেগুলির সাথে কাজ করার সময়, উভয় সূচকের ট্র্যাক রাখা অপরিহার্য, যাতে আপনি সঠিকভাবে ডেটা অ্যাক্সেস এবং ম্যানিপুলেট করতে পারেন।
- নিম্নলিখিত সিনট্যাক্স ব্যবহার করে একটি 2D অ্যারে তৈরি করা হয়েছে:
`dataType[][] arrayName = new dataType[rowSize][columnSize];` - একটি 2D অ্যারের উপাদান দুটি সূচকের সাথে অ্যাক্সেস করা যেতে পারে: `arrayName[সারি][কলাম];`
- একটি 2D অ্যারের মাধ্যমে পুনরাবৃত্তিতে সাধারণত নেস্টেড লুপ জড়িত থাকে।
আরো ডাইভিং আগে 2D তে অ্যারে অনুলিপি করুন, এটা বোঝা গুরুত্বপূর্ণ কেন সাবয়ারের গভীর অনুলিপি তৈরি করা গুরুত্বপূর্ণ। একটি অগভীর অনুলিপি কেবলমাত্র সাবয়ারের রেফারেন্সগুলিকে অনুলিপি করবে এবং মূলে করা যেকোনো পরিবর্তনও অনুলিপিকে প্রভাবিত করবে। গভীর অনুলিপি তৈরি করে, আমরা নিশ্চিত করি যে একটি অ্যারের পরিবর্তন অন্যটিকে প্রভাবিত করে না।
Java.util.Arrays লাইব্রেরি
আমাদের সমাধানে, আমরা `java.util.Arrays` লাইব্রেরি ব্যবহার করেছি, যা অ্যারের সাথে কাজ করার জন্য দরকারী ইউটিলিটি পদ্ধতি প্রদান করে। একটি 2D অ্যারে অনুলিপি করার নির্দিষ্ট সমস্যার জন্য, আমরা সাবারেগুলির গভীর অনুলিপি তৈরি করতে `Arrays.copyOf()` পদ্ধতি ব্যবহার করেছি।
- `Arrays.copyOf()` পদ্ধতিটি মূল অ্যারের একটি গভীর অনুলিপি তৈরি করে। এটি দুটি প্যারামিটার লাগে: আসল অ্যারে এবং নতুন অ্যারের দৈর্ঘ্য।
- এই লাইব্রেরির অন্যান্য দরকারী পদ্ধতিগুলির মধ্যে রয়েছে `Arrays.fill()`, `Arrays.sort()`, এবং `Arrays.binarySearch()`।
উপসংহারে, জাভাতে একটি 2D অ্যারে অনুলিপি করার জন্য একটি গভীর অনুলিপি প্রয়োজন যাতে অনুলিপিটিকে প্রভাবিত না করে মূল অ্যারের পরিবর্তনগুলি প্রতিরোধ করা যায়। আমরা `java.util.Arrays` লাইব্রেরি থেকে `Arrays.copyOf()` পদ্ধতি ব্যবহার করে একটি সমাধান প্রদর্শন করেছি এবং তৈরি করা ফাংশনটি কার্যকরী এবং বোঝা সহজ। 2D অ্যারে, Java.util.Arrays লাইব্রেরি এবং অ্যারে ম্যানিপুলেশন সম্পর্কে আমাদের গভীর বোঝার সাথে, আমরা এখন জাভাতে আরও বেশি আত্মবিশ্বাস এবং আরও শক্তিশালী সমাধানের সাথে অন্যান্য চ্যালেঞ্জ মোকাবেলা করতে পারি।