মূল কন্টেন্টে যান
মডিউল 4 · 2-এর পাঠ 2কোর্সে 8/14~15 min
মডিউল পাঠ (2/2)

সংগ্রহ এবং ArrayList

জাভাতে প্রচলিত অ্যারেগুলির একটি নির্দিষ্ট আকার তৈরির সময় সংজ্ঞায়িত করা হয়েছে। ডাটাগুলির তালিকার সাথে কাজ করার জন্য যার আকার গতিশীলভাবে পরিবর্তিত হতে পারে, জাভা জাভা সংগ্রহ ফ্রেমওয়ার্ক প্রদান করে। সবচেয়ে বেশি ব্যবহৃত ক্লাস হল ArrayList_।

ArrayList ক্লাস এবং জেনেরিক

ArrayList মেমরিতে একটি পরিবর্তনযোগ্য অ্যারে প্রয়োগ করে। একটি ArrayList ঘোষণা করতে, এটিকে < > এঙ্গেল ব্র্যাকেটে আবদ্ধ করে এটিতে যে ধরনের উপাদান থাকবে তা আমাদের অবশ্যই নির্দিষ্ট করতে হবে। এই বৈশিষ্ট্যটিকে জেনারিকস বলা হয়।

ArrayList ব্যবহার করতে, আমাদের অবশ্যই ফাইলের শুরুতে java.util.ArrayList থেকে আমদানি করতে হবে।

ঘোষণা এবং ইনস্টিটিয়েশন:

Java
import java.util.ArrayList;

ArrayList<String> shoppingList = new ArrayList<>();

মূল পদ্ধতি

এখানে একটি ArrayList এর মৌলিক ক্রিয়াকলাপ রয়েছে:

  1. add(element): তালিকার শেষে একটি উপাদান যোগ করে।
  2. get(index): নির্দিষ্ট সূচীতে উপাদান প্রদান করে (0-সূচিবদ্ধ)।
  3. size(): তালিকায় বর্তমানে থাকা উপাদানের সংখ্যা প্রদান করে।
  4. remove(index): নির্দিষ্ট সূচীতে উপাদানটি সরিয়ে দেয়।
Java
shoppingList.add("Pane");
shoppingList.add("Latte");

System.out.println("Elementi: " + shoppingList.size()); // Prints 2
System.out.println("Primo elemento: " + shoppingList.get(0)); // Prints "Pane"

একটি তালিকার উপর পুনরাবৃত্তি করা (প্রতিটির জন্য)

প্রতিটি লুপ হল একটি সংগ্রহের সমস্ত উপাদানের মাধ্যমে পুনরাবৃত্তি করার জন্য আদর্শ কাঠামো:

Java
for (String item : shoppingList) {
    System.out.println(item);
}

অ্যারে বনাম অ্যারেলিস্ট: মেমরি এবং কর্মক্ষমতা

যদিও ArrayList একটি স্ট্যাটিক অ্যারের তুলনায় অনেক বেশি নমনীয়, এটি কর্মক্ষমতা এবং মেমরি ট্রেড-অফের সাথে আসে:

  • স্ট্যাটিক অ্যারে: এটি মেমরির সংলগ্ন ব্লকে বরাদ্দ করা হয়, এর একটি নির্দিষ্ট আকার রয়েছে এবং সূচকের মাধ্যমে উপাদানগুলি অ্যাক্সেস করা অত্যন্ত দ্রুত। এটি ওভারহেড ছাড়াই সরাসরি আদিম প্রকারগুলি সঞ্চয় করে।
  • অ্যারেলিস্ট: অভ্যন্তরীণভাবে, এটি একটি অ্যারে পরিচালনা করে যা পুনরায় আকার দেওয়া হয় (একটি নতুন বড় অ্যারে তৈরি করে এবং পুরানো উপাদানগুলি অনুলিপি করে) যখন এর প্রাথমিক ক্ষমতা (সাধারণত 10) অতিক্রম করা হয়। তাছাড়া, এটি শুধুমাত্র বস্তুর রেফারেন্স সংরক্ষণ করে, প্রতিটি উপাদানের জন্য মেমরি ওভারহেড প্রবর্তন করে।

অটোবক্সিং এবং আনবক্সিং

যেহেতু ArrayList শুধুমাত্র অবজেক্ট ধারণ করতে পারে, জাভা স্বয়ংক্রিয়ভাবে আদিম প্রকার এবং তাদের নিজ নিজ র্যাপার ক্লাসের মধ্যে রূপান্তর সম্পাদন করে:

  • অটোবক্সিং: একটি আদিম প্রকার থেকে একটি মোড়ক শ্রেণীতে স্বয়ংক্রিয় রূপান্তর। উদাহরণস্বরূপ, আপনি যখন numbers.add(42) লিখবেন, জাভা স্বয়ংক্রিয়ভাবে 42 (int) কে Integer.valueOf(42) (পূর্ণসংখ্যা) এ রূপান্তরিত করে।
  • আনবক্সিং: একটি র্যাপার ক্লাস থেকে একটি আদিম প্রকারে স্বয়ংক্রিয় রূপান্তর। উদাহরণস্বরূপ, যখন আপনি int num = numbers.get(0) চালান, তখন জাভা অভ্যন্তরীণভাবে Integer কে int এ রূপান্তর করে।

নিজে চেষ্টা করে দেখুন

ব্যায়াম#java.m4.l2.e1
প্রচেষ্টা: 0লোড হচ্ছে...

অ্যারেলিস্ট আমদানি করুন, নামযুক্ত স্ট্রিংগুলির একটি অ্যারেলিস্ট ঘোষণা করুন। তালিকায় এলিস এবং বব যোগ করুন, তারপর সাইজ() পদ্ধতি ব্যবহার করে এর আকার প্রিন্ট করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

শীর্ষে `import java.util.ArrayList;` অন্তর্ভুক্ত করুন। `ArrayList<String> names = new ArrayList<>();` দিয়ে তালিকা তৈরি করুন, উপাদান যোগ করুন এবং এর আকার `names.size()` দিয়ে প্রিন্ট করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#java.m4.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

পূর্ণসংখ্যা নামের একটি অ্যারেলিস্ট ঘোষণা করুন, 42 নম্বর যোগ করুন এবং get() ব্যবহার করে সূচক 0 এ পুনরুদ্ধার করে এটি মুদ্রণ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

`ArrayList<Integer> numbers = new ArrayList<>();` (Integer wrapper class সহ) ব্যবহার করুন এবং `System.out.println(numbers.get(0));` দিয়ে প্রিন্ট করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#java.m4.l2.e3
প্রচেষ্টা: 0লোড হচ্ছে...

স্ট্রিং নামের রঙের একটি অ্যারেলিস্ট ঘোষণা করুন। তালিকায় লাল, সবুজ এবং নীল রং যোগ করুন। অবশেষে, তালিকার মাধ্যমে পুনরাবৃত্তি করার জন্য একটি লুপ ব্যবহার করুন এবং প্রতিটি রঙ পর্দায় মুদ্রণ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

`ArrayList<String> colors = new ArrayList<>();` দিয়ে তালিকা ঘোষণা করুন, তিনটি রং যোগ করুন এবং `System.out.println(c);` ব্যবহার করে প্রিন্ট করতে `(স্ট্রিং c : colors)` এর জন্য একটি লুপ ব্যবহার করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ