কম্পিউটার

জাভাতে একটি অ্যারে অনুলিপি করার 4 উপায়

আপনি যখন জাভাতে অ্যারের সাথে কাজ করছেন, তখন আপনি সিদ্ধান্ত নিতে পারেন যে আপনি একটি অ্যারের একটি অনুলিপি তৈরি করতে চান। উদাহরণস্বরূপ, আপনি যদি একটি কফি শপ চালান এবং একটি মৌসুমী মেনু তৈরি করতে চান তবে আপনি আপনার আসল মেনুটির একটি অনুলিপি তৈরি করতে চাইতে পারেন যার উপর ভিত্তি করে নতুন মেনু তৈরি করা যেতে পারে।

জাভাতে, আপনি একটি অ্যারে অনুলিপি করতে পারেন এমন অনেক উপায় রয়েছে। এই টিউটোরিয়ালটি অ্যারে কপি করার জন্য চারটি সাধারণ পদ্ধতি অন্বেষণ করবে এবং তারা কীভাবে লাইন-বাই-লাইন কাজ করে তা নিয়ে আলোচনা করবে। এই টিউটোরিয়ালটি পড়ার পরে, আপনি জাভাতে অ্যারে অনুলিপি করতে মাস্টার হবেন।

জাভা অ্যারে

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

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

ধরুন আমরা একটি অ্যারে তৈরি করতে চাই যা আমাদের কফিশপে বিক্রি হওয়া কফি সঞ্চয় করে। আমরা এই কোড ব্যবহার করে তা করতে পারি:

String[] coffees = {“Espresso”, “Mocha”, “Latte”, “Cappuccino”, “Pour Over”, “Flat White”};

এই উদাহরণে, আমরা coffees নামে একটি অ্যারে ঘোষণা করি যা স্ট্রিং মান সংরক্ষণ করে। আমাদের অ্যারেতে ছয়টি মান রয়েছে।

একটি অ্যারের প্রতিটি আইটেম একটি সূচক নম্বর বরাদ্দ করা হয়, 0 থেকে শুরু করে, যা একটি অ্যারেতে পৃথকভাবে আইটেম উল্লেখ করতে ব্যবহার করা যেতে পারে।

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।

এখন যেহেতু আমরা জাভা অ্যারেগুলির মূল বিষয়গুলি অন্বেষণ করেছি, আমরা আপনার অ্যারের বিষয়বস্তু অনুলিপি করতে ব্যবহার করতে পারেন এমন পদ্ধতিগুলি নিয়ে আলোচনা করতে পারি।

অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে অ্যারে কপি করুন

একটি অ্যারে অনুলিপি করতে ব্যবহৃত সবচেয়ে সাধারণ ক্লোন পদ্ধতিগুলির মধ্যে একটি হল অ্যাসাইনমেন্ট অপারেটর ব্যবহার করা।

অ্যাসাইনমেন্ট অপারেটর একটি অ্যারেতে একটি মান নির্ধারণ করতে ব্যবহৃত হয়। অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে, আমরা একটি বিদ্যমান অ্যারের বিষয়বস্তু একটি নতুন ভেরিয়েবলে বরাদ্দ করতে পারি, যা আমাদের বিদ্যমান অ্যারের একটি অনুলিপি তৈরি করবে।

কফিশপে ফিরে আসা যাক। ধরুন আমরা coffees এর একটি অনুলিপি তৈরি করতে চাই অ্যারে যার উপর আমরা আমাদের গ্রীষ্মকালীন কফি মেনু বেস করব। আমরা অ্যারের একটি অনুলিপি তৈরি করতে এই কোডটি ব্যবহার করতে পারি:

<প্রি>ক্লাস কপিঅ্যাসাইনমেন্ট { পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] আর্গস) { স্ট্রিং[] কফি ={"এসপ্রেসো", "মোচা", "ল্যাটে", "ক্যাপুচিনো", "পুর ওভার", "ফ্ল্যাট হোয়াইট"}; স্ট্রিং[] গ্রীষ্ম_কফি =কফি; জন্য (স্ট্রিং c:summer_coffees) { System.out.print(c + ","); } } }

আমাদের কোড ফিরে আসে:

Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White,

আসুন আমাদের কোড ভাঙ্গা যাক। আমাদের CopyAssignment ক্লাসের ভিতরে কোডের প্রথম লাইনে, আমরা coffees নামে একটি অ্যারে ঘোষণা করি। যা আমাদের স্ট্যান্ডার্ড কফি মেনু সংরক্ষণ করে।

পরবর্তী লাইনে, আমরা coffees এর মান নির্ধারণ করতে অ্যাসাইনমেন্ট অপারেটর ব্যবহার করি summer_coffees. নামে একটি নতুন অ্যারেতে . তারপরে আমরা একটি "প্রতিটির জন্য" লুপ তৈরি করি যা summer_coffees.-এর প্রতিটি আইটেমের মাধ্যমে পুনরাবৃত্তি করে অ্যারে এবং কনসোলে এটি প্রিন্ট করে।

এই পদ্ধতিটি ব্যবহার করার একটি ত্রুটি রয়েছে:আপনি যদি একটি অ্যারের উপাদান পরিবর্তন করেন তবে অন্য অ্যারেটিও পরিবর্তিত হবে। তাই যদি আমরা Latte এর মান পরিবর্তন করি Summer Latte আমাদের summer_coffees.-এ তালিকা, আমাদের coffees তালিকাও পরিবর্তন করা হবে।

অ্যারে কপি করতে লুপ করুন

অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে একটি অ্যারে অনুলিপি করার জন্য আমরা যে প্রথম পদ্ধতি নিয়ে আলোচনা করেছি - সেটি তৈরি করে যাকে shallow copy. বলা হয়। এই ক্ষেত্রে কারণ আমরা একটি বিদ্যমান অ্যারে অবজেক্টকে একটি নতুনের জন্য বরাদ্দ করেছি, যার মানে হল যে আমরা যখন কোনও অবজেক্ট পরিবর্তন করি, তখন সেগুলি উভয়ই পরিবর্তিত হবে — দুটি অবজেক্ট লিঙ্ক করা হয়েছে।

যাইহোক, আমাদের প্রায়ই একটি গভীর অনুলিপি তৈরি করতে হবে। গভীর অনুলিপি একটি বিদ্যমান অবজেক্ট থেকে মান অনুলিপি করে এবং একটি নতুন অ্যারে অবজেক্ট তৈরি করে। আপনি যখন একটি গভীর অনুলিপি তৈরি করেন, আপনি আসলটিকে প্রভাবিত না করেই আপনার নতুন অ্যারে পরিবর্তন করতে পারেন৷

একটি গভীর অনুলিপি তৈরি করতে ব্যবহার করা যেতে পারে এমন একটি পদ্ধতি হল একটি for তৈরি করা লুপ যা একটি অ্যারের বিষয়বস্তুর মাধ্যমে পুনরাবৃত্তি করে এবং একটি নতুন অ্যারে তৈরি করে।

ধরুন আমরা আমাদের coffees এর একটি গভীর অনুলিপি তৈরি করতে চাই summer_coffees. নামক অ্যারে এটি একটি গভীর অনুলিপি হওয়া প্রয়োজন কারণ আমরা summer_coffees. এর বিষয়বস্তু পরিবর্তন করার পরিকল্পনা করছি গ্রীষ্মের মাসগুলিতে আমরা যে নতুন কফিগুলি অফার করব তা প্রতিফলিত করতে অ্যারে।

for ব্যবহার করে একটি গভীর অনুলিপি তৈরি করতে আমরা যে কোডটি ব্যবহার করব তা এখানে লুপ:

 import java.util.Arrays; class LoopCopy { পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] আরগস) { স্ট্রিং[] কফি ={"এসপ্রেসো", "মোচা", "ল্যাটে", "ক্যাপুচিনো", "পুর ওভার" , "ফ্ল্যাট হোয়াইট"}; স্ট্রিং[] গ্রীষ্ম_কফি =নতুন স্ট্রিং[6]; জন্য (int i =0; i  

যখন আমরা আমাদের কোড চালাই, আউটপুট নিম্নরূপ হয়:

[Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

আপনি দেখতে পাচ্ছেন, আমাদের কোড আমাদের আসল অ্যারের একটি অনুলিপি তৈরি করেছে। এটি ধাপে ধাপে কীভাবে কাজ করে তা ব্যাখ্যা করা যাক:

  1. আমরা java.util.Arrays আমদানি করি যা toString() পদ্ধতি অন্তর্ভুক্ত করে, আমরা উদাহরণের শেষে কনসোলে আমাদের অ্যারে প্রিন্ট করতে ব্যবহার করব।
  1. আমরা coffees নামে একটি অ্যারে ঘোষণা করি যা আমাদের স্ট্যান্ডার্ড মেনুতে কফির তালিকা সংরক্ষণ করে।
  2. আমরা summer_coffees. নামে একটি অ্যারে শুরু করি যা ছয়টি মান সংরক্ষণ করবে।
  3. আমরা coffees-এর প্রতিটি আইটেমের মাধ্যমে পুনরাবৃত্তি করার জন্য একটি লুপ ব্যবহার করি তালিকা।
  4. প্রতিবার লুপ চালানোর সময়, আইটেমটি সূচক মান i গ্রীষ্মে_ কফি সূচী মান i এ আইটেম বরাদ্দ করা হবে কফিতে।
  5. আমরা summer_coffees. রূপান্তর করতে Arrays.toString() ব্যবহার করি একটি স্ট্রিং-এ, তারপর কনসোলে আমাদের অনুলিপি করা উপাদানগুলির সাথে নতুন অ্যারে মুদ্রণ করুন৷

copyOfRange() জাভা পদ্ধতি ব্যবহার করা

Java copyOfRange() পদ্ধতি Arrays.copyOfRange() অনুলিপি করতে ব্যবহৃত হয় java.util.Arrays ক্লাসের অংশ। এখানে copyOfRange() পদ্ধতির জন্য সিনট্যাক্স রয়েছে:

 java.util.arrays;DataType[] newArray =Arrays.copyOfRange(oldArray, indexPos, length);

আসুন copyOfRange() পদ্ধতির জন্য সিনট্যাক্স ভেঙে ফেলি:

  1. ডেটা টাইপ নতুন অ্যারে যে ধরনের ডেটা সংরক্ষণ করবে।
  2. নতুন অ্যারে৷ নতুন অ্যারের নাম৷
  3. পুরাতন অ্যারে৷ সেই অ্যারে যার মান আপনি newArray এ কপি করতে চান .
  4. indexPos oldArray-এ কপি অপারেশন শুরু করা উচিত এমন অবস্থান .
  5. দৈর্ঘ্য oldArray থেকে কপি করা মানের সংখ্যা newArray-এ .

CopyOfRange() পদ্ধতিটি কার্যকরভাবে প্রদর্শন করার জন্য আসুন একটি উদাহরণের মাধ্যমে চলুন। বলুন আমরা আমাদের coffees এর একটি অনুলিপি তৈরি করতে চাই আগের থেকে অ্যারে। আমরা এই কোড ব্যবহার করে তা করতে পারি:

 import java.util.Arrays; class CopyUsingRange { পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] args) { স্ট্রিং[] কফি ={"এসপ্রেসো", "মোচা", "ল্যাটে", "ক্যাপুচিনো", "ঢালাও" , "ফ্ল্যাট হোয়াইট"}; স্ট্রিং[] summer_coffees =Arrays.copyOfRange(কফি, 0, coffees.length); System.out.println("গ্রীষ্মকালীন কফি:" + Arrays.toString(summer_coffees)); }}

আমাদের কোড ফিরে আসে:

Summer coffees: [Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

আসুন আমাদের কোড ভাঙ্গুন:

  1. আমরা java.util.Arrays আমদানি করি লাইব্রেরি যা copyOfRange() এবং toString() পদ্ধতি সংরক্ষণ করে যা আমরা আমাদের উদাহরণে ব্যবহার করব।
  2. আমরা coffees নামে একটি অ্যারে ঘোষণা করি যা আমাদের স্ট্যান্ডার্ড মেনুতে কফি সংরক্ষণ করে।
  3. আমরা summer_coffees. নামে একটি অ্যারে ঘোষণা করি এবং coffees এর একটি অনুলিপি তৈরি করতে copyOfRange() পদ্ধতি ব্যবহার করুন অ্যারে আমরা যে পরামিতিগুলি নির্দিষ্ট করি তা নিম্নরূপ:
    1. কফি আমরা যে অ্যারের কপি করতে চাই তার নাম৷
    2. সুনির্দিষ্ট করে যে আমরা coffees থেকে সূচক অবস্থান 0 থেকে শুরু করে মান কপি করতে চাই অ্যারে।
    3. coffees.length উল্লেখ করে যে আমরা তালিকার প্রতিটি মান কপি করতে চাই।
  4. আমরা প্রিন্ট আউট করি "গ্রীষ্মকালীন কফি:" এর পরে summer_coffees. নামক ফলাফলের অ্যারে কনসোলে।

এখন আমরা আমাদের “coffees এর একটি অনুলিপি তৈরি করেছি summer_coffees. নামের তালিকা .

অ্যারেকপি() জাভা পদ্ধতি ব্যবহার করা

একটি অ্যারে থেকে অন্য অ্যারেতে ডেটা কপি করতে arraycopy() পদ্ধতি ব্যবহার করা হয়। arraycopy() পদ্ধতিটি সিস্টেম ক্লাসের অংশ এবং এতে অনেকগুলি বিকল্প রয়েছে যা আপনাকে একটি বিদ্যমান অ্যারের তৈরি করা অনুলিপি কাস্টমাইজ করার অনুমতি দেয়।

এখানে arraycopy() পদ্ধতির সিনট্যাক্স রয়েছে:

System.arraycopy(sourceArray, startingPos, newArray, newArrayStartingPos, length);

আসুন এই পদ্ধতিটি ভেঙে দেওয়া যাক। copyarray() পাঁচটি পরামিতি গ্রহণ করে:

  • সোর্স অ্যারে আপনি যে অ্যারের কপি করতে চান সেটির নাম৷
  • startingPos সূচক অবস্থান যেখান থেকে আপনি source_array-এ মান অনুলিপি করা শুরু করতে চান .
  • নতুন অ্যারে৷ নতুন অ্যারের নাম যেখানে মানগুলি কপি হবে৷
  • newArrayStartingPos সূচক অবস্থান যেখানে অনুলিপি করা মান যোগ করা উচিত।
  • দৈর্ঘ্য আপনি new_array-এ কপি করতে চান এমন উপাদানের সংখ্যা .

কফিশপে ফিরে আসা যাক। ধরুন আমরা আমাদের coffees-এ প্রতিটি মান কপি করতে চাই summer_coffees. নামে একটি নতুন অ্যারেতে অ্যারে . আমরা এই কোড ব্যবহার করে তা করতে পারি:

 import java.util.Arrays;class ArrayCopyMethod { পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] আরগস) { স্ট্রিং[] কফি ={"এসপ্রেসো", "মোচা", "ল্যাটে", "ক্যাপুচিনো", "পোর ওভার" , "ফ্ল্যাট হোয়াইট"}; স্ট্রিং[] গ্রীষ্ম_কফি =নতুন স্ট্রিং[6]; System.arraycopy(কফি, 0, গ্রীষ্ম_কফি, 0, coffees.length); System.out.println("গ্রীষ্মকালীন কফি:" + Arrays.toString(summer_coffees)); }}

আমাদের কোড ফিরে আসে:

Summer coffees: [Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

আসুন ধাপে ধাপে আমাদের কোডটি ভেঙে ফেলি:

  1. আমরা java.util.Arrays আমদানি করি আমাদের প্রোগ্রামের শুরুতে প্যাকেজ। এর মধ্যে রয়েছে toString() পদ্ধতি যা আমরা আমাদের প্রোগ্রামের শেষে তৈরি করা অ্যারে কপি প্রিন্ট করতে ব্যবহার করব।
  2. আমরা coffees নামে একটি অ্যারে ঘোষণা করি যা আমাদের স্ট্যান্ডার্ড মেনুতে কফি সংরক্ষণ করে।
  3. আমরা summer_coffees. নামে একটি অ্যারে শুরু করি যেটিতে ৬টি মান থাকবে।
  4. আমাদের coffees এর একটি অনুলিপি তৈরি করতে আমরা arraycopy() ব্যবহার করি অ্যারে এখানে আমরা নির্দিষ্ট পরামিতি আছে:
    1. কফি আমরা কপি করতে চাই অ্যারে।
    2. যে অবস্থানে আমরা আমাদের অনুলিপি coffees-এ শুরু করতে চাই অ্যারে।
    3. গ্রীষ্মের_কফি একটি অ্যারে যেখানে আমরা আমাদের অনুলিপি করা মান যোগ করতে চাই।
    4. সেই অবস্থান যেখানে আমরা কপি করা মানগুলি summer_coffees.-এ যোগ করা শুরু করতে চাই অ্যারে।
    5. coffees.length আমরা কপি করতে চাই অ্যারে উপাদান সংখ্যা. এই ক্ষেত্রে, coffees.length ব্যবহার করে আমাদের coffees থেকে প্রতিটি উপাদান কপি করার অনুমতি দেয় তালিকা।
  5. আমরা "গ্রীষ্মকালীন কফি:" উল্লেখ করে একটি বার্তা প্রিন্ট করি, তারপরে আমাদের তৈরি করা গ্রীষ্মকালীন কফির তালিকা।

উপসংহার

আপনি যখন তালিকাগুলির সাথে কাজ করছেন তখন একটি অ্যারে অনুলিপি করা একটি সাধারণ ক্রিয়াকলাপ। এই টিউটোরিয়ালটি চারটি উপায় অন্বেষণ করেছে যাতে আপনি জাভাতে একটি অ্যারে অনুলিপি করতে পারেন।

প্রথমে, আমরা আলোচনা করেছি কিভাবে অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে একটি অগভীর অনুলিপি তৈরি করা যায়, তারপর আমরা ব্যাখ্যা করতে এগিয়ে গেলাম কিভাবে একটি for ব্যবহার করে একটি গভীর অনুলিপি তৈরি করা যায়। লুপ. তারপরে আমরা অনুসন্ধান করেছি কিভাবে একটি অ্যারের একটি অনুলিপি তৈরি করতে copyOfRange() পদ্ধতিটি ব্যবহার করতে হয় এবং কিভাবে arraycopy() সিস্টেম পদ্ধতিটি একটি অ্যারের অনুলিপি করতে ব্যবহৃত হয়।

এখন আপনি একজন পেশাদারের মতো জাভাতে অ্যারে কপি করা শুরু করতে প্রস্তুত!


  1. জাভাস্ক্রিপ্টে একটি অ্যারে খালি করার উপায়গুলির সংখ্যা

  2. জাভাতে ArrayIndexOutOfBoundsException কি?

  3. জাভাতে ডিফল্ট অ্যারে মান

  4. জাভাতে তালিকাকে অ্যারেতে রূপান্তর করুন