"আমি এখানে."

"হাই, এলি!"

"আজ আমরা একটি আকর্ষণীয় বিষয় নিয়ে কথা বলব। আমি আপনাকে ArrayList ক্লাস সম্পর্কে বলতে যাচ্ছি ।"

"একটা নতুন ক্লাস? শান্ত! এটা কি করতে পারে?"

"আমাকে পিছনের গল্প দিয়ে শুরু করা যাক। প্রোগ্রামাররা অ্যারে সম্পর্কে শুধুমাত্র যে জিনিসটি অপছন্দ করে তা হল আপনি তাদের আকার পরিবর্তন করতে পারবেন না। আপনি যদি একটি অ্যারেতে আরও তিনটি উপাদান যোগ করতে চান যেটিতে শুধুমাত্র একটি বিনামূল্যের স্লট আছে তাহলে আপনি কী করবেন? "

"এই সমস্যার একমাত্র সমাধান হল খুব বড় অ্যারে তৈরি করা, যাতে আপনার কাছে সমস্ত উপাদানের জন্য পর্যাপ্ত জায়গা রয়েছে তা নিশ্চিত করা। যাইহোক, এর অর্থ প্রায়শই নষ্ট মেমরি। যদি একটি অ্যারেতে সাধারণত তিনটি উপাদান থাকে, তবে সবচেয়ে ছোট সুযোগও থাকে। এটি 100টি উপাদান মিটমাট করার প্রয়োজন হতে পারে, আপনাকে একটি 100-উপাদান অ্যারে তৈরি করতে হবে।"

"তাহলে, প্রোগ্রামাররা কী নিয়ে এসেছিল?"

"তারা অ্যারেলিস্ট ক্লাস লিখেছে , যা একটি অ্যারের মতো একই কাজ করে, তবে এটি এর আকার পরিবর্তন করতে পারে।"

"আকর্ষণীয় পদক্ষেপ। তারা এটা কিভাবে করেছে?"

"প্রতিটি ArrayList অবজেক্ট উপাদানগুলির একটি নিয়মিত বিন্যাস সঞ্চয় করে। আপনি যখন একটি ArrayList থেকে উপাদানগুলি পড়েন , তখন এটি তাদের ভিতরের অ্যারে থেকে পড়ে। আপনি যখন ArrayList এ লেখেন , তখন এটি তাদের ভিতরের অ্যারেতে লেখে। এখানে, এই কলামগুলির তুলনা করুন:"

অ্যারে অ্যারেলিস্ট
উপাদানগুলির জন্য একটি ধারক তৈরি করুন
String[] list = new String[10];
ArrayList<String> list = new ArrayList<String>();
উপাদানের সংখ্যা পান
int n = list.length;
int n = list.size();
একটি অ্যারে/সংগ্রহ থেকে একটি উপাদান পান
String s = list[3];
String s = list.get(3);
একটি অ্যারেতে একটি উপাদান লিখুন
list[3] = s;
list.set(3, s);

"তাহলে, কেন অ্যারেলিস্টটি ভাল? যতদূর আমি বলতে পারি, কোডটি এখন দীর্ঘ।"

"প্রথম, অ্যারেলিস্ট অনেকগুলি অতিরিক্ত ক্রিয়াকলাপ সমর্থন করে যা প্রোগ্রামারদের সর্বদা সম্পাদন করতে হয়৷ একটি সাধারণ অ্যারে এই ক্রিয়াকলাপগুলিকে সমর্থন করে না৷ উদাহরণস্বরূপ, ছিদ্র না রেখে একটি অ্যারের মাঝখানে থেকে উপাদানগুলি সন্নিবেশ করা বা মুছে ফেলা৷ "

"দ্বিতীয়, অ্যারের আকার পরিবর্তন করার ক্ষমতা। যখন আপনাকে আরও একটি উপাদান যোগ করতে হবে কিন্তু অভ্যন্তরীণ অ্যারেতে কোনো বিনামূল্যের স্লট নেই, তখন অ্যারেলিস্টের ভিতরে যা ঘটে তা এখানে :

ক) আরেকটি অ্যারে তৈরি করা হয়েছে যা বর্তমান অভ্যন্তরীণ অ্যারের থেকে 50% বড়, প্লাস একটি উপাদান।

খ) পুরানো অ্যারের সমস্ত উপাদান নতুনটিতে অনুলিপি করা হয়েছে।

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

অ্যারে অ্যারেলিস্ট
অ্যারের শেষে একটি উপাদান যোগ করুন
এই কর্ম সমর্থিত নয়
list.add(s);
অ্যারের মাঝখানে একটি উপাদান যোগ করুন
এই কর্ম সমর্থিত নয়
list.add(15, s);
অ্যারের শুরুতে একটি উপাদান যোগ করুন
এই কর্ম সমর্থিত নয়
list.add(0, s);
অ্যারে থেকে একটি উপাদান মুছুন
আমরা এর সাথে একটি উপাদান মুছে ফেলতে পারি list[3] = null। কিন্তু এই অ্যারের একটি 'গর্ত' ছেড়ে যাবে.
list.remove(3);

"আমরা কিভাবে এই ArrayList এর সাথে কাজ করব?"

"আসলে, আমরা একটি সাধারণ অ্যারের সাথে যেমন করি। দেখুন। আসুন একটি অ্যারেলিস্টের সাথে কাজ করার সাথে একটি অ্যারের সাথে কাজ করার তুলনা করি। ধরুন আমাদের '10টি স্ট্রিংয়ে পড়তে হবে এবং তাদের বিপরীত ক্রমে পর্দায় প্রদর্শন করতে হবে '।"

"এটা দেখ:

একটি অ্যারে সঙ্গে
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
String[] list = new String[10];
for (int i = 0; i < list.length; i++)
{
  String s = reader.readLine();
  list[i] = s;
}

// Display the contents of the array
for (int i = 0; i < list.length; i++)
{
  int j = list.length - i - 1;
  System.out.println( list[j] );
}
}
একটি ArrayList সঙ্গে
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++)
{
  String s = reader.readLine();
  list.add(s);
}

// Display the contents of the collection
for (int i = 0; i < list.size(); i++)
{
  int j = list.size() - i - 1;
  System.out.println( list.get(j) );
}
}

আমি প্রতিটি কলামে একই ধরনের ক্রিয়া হাইলাইট করতে একই রঙ ব্যবহার করেছি।"

"একদিকে, সবকিছু আলাদা। অন্যদিকে, এটি এখনও একই।"

"ঠিক আছে। একটি ArrayList এর সাথে কাজ করার সময় আমরা বর্গাকার বন্ধনী ব্যবহার করি না। পরিবর্তে, আমরা get , set এবং add methods ব্যবহার করি।"

"হ্যাঁ, আমি এতটুকু সংগ্রহ করেছি। তবুও, এটি দেখতে অনেকটা একই রকম।"