কম্পিউটার

জাভা প্রোগ্রামিং-এ ArrayList এবং CopyOnWriteArrayList এর মধ্যে পার্থক্য।


ArrayList এবং CopyOnWriteArrayList উভয়ই জাভাতে তালিকা ইন্টারফেসের বাস্তবায়ন। কিন্তু কিছু পার্থক্যও আছে।

নীচে ArrayList এবং CopyOnWriteArrayList এর মধ্যে গুরুত্বপূর্ণ পার্থক্য রয়েছে।

Sr. না। কী অ্যারেলিস্ট CopyOnWriteArrayList
1 সিঙ্ক্রোনাইজেশন অ্যারেলিস্ট প্রকৃতিতে সিঙ্ক্রোনাইজ করা হয় না। অন্যদিকে CopyOnWriteArrayList প্রকৃতিতে সিঙ্ক্রোনাইজ করা হয় অর্থাৎ একটি সময়ে শুধুমাত্র একটি থ্রেড বস্তুটি অ্যাক্সেস করতে পারে।
2 পারফরম্যান্স অ্যারেলিস্ট এর অপারেশনে কোন সিঙ্ক্রোনাইজেশন না হওয়ায় দ্রুত। সিঙ্ক্রোনাইজেশন CopyOnWriteArrayList কে কর্মক্ষমতা ধীর করে তোলে।
3 ব্যর্থ নিরাপত্তা অ্যারেলিস্ট ইটারেটরগুলি দ্রুত ব্যর্থ হয় এবং ট্র্যাভার্সের সময় পরিবর্তনের উপর সমবর্তী পরিবর্তনের ব্যতিক্রম নিক্ষেপ করে৷ CopyOnWriteArrayList ব্যর্থ-নিরাপদ এবং ট্র্যাভার্সের সময় পরিবর্তনের অনুমতি দেয়।
4 উপাদান সরান পুনরাবৃত্তির সময় ArrayList-এর একটি পুনরাবৃত্তিকারী রিমুভ অপারেশন করতে পারে। CopyOnWriteArrayList পুনরাবৃত্তি করার সময় অপসারণের ক্রিয়াকলাপ সম্পাদন করতে পারে না, অন্যথায় এটি রান-টাইম ব্যতিক্রম UnsupportedOperationException ফেলে দেবে।
5 জাভাতে ভূমিকা অ্যারেলিস্ট CopyOnWriteArrayList এর চেয়ে পুরানো কারণ এটি জাভা সংস্করণ 1.2 এ যোগ করা হয়েছিল। CopyOnWriteArrayList ক্লাস জাভা সংস্করণ 1.5 (বা জাভা 5) এ যোগ করা হয়েছে।
6 প্যাকেজ অ্যারেলিস্ট ক্লাস java.util প্যাকেজে উপস্থিত। CopyOnWriteArrayList ক্লাস java.util.concurrent প্যাকেজে উপস্থিত।

অ্যারেলিস্ট বনাম CopyOnWriteArrayList এর উদাহরণ

ArrayListDemo.java

import java.util.*;
public class ArrayListDemo{
   public static void main(String[] args){
      ArrayList l = new ArrayList();
      l.add("A");
      l.add("B");
      l.add("C");
      Iterator itr = l.iterator();
      while (itr.hasNext()){
         String s = (String)itr.next();
         if (s.equals("B")){
            itr.remove();
         }
      }
      System.out.println(l);
   }
}

আউটপুট

[A,C]

উদাহরণ

CopyOnWriteArrayListDemo.java

import java.util.concurrent.CopyOnWriteArrayList;
import java.util.*;
class CopyOnWriteArrayListDemo extends Thread {
   static CopyOnWriteArrayList l = new CopyOnWriteArrayList();
   public static void main(String[] args) throws InterruptedException{
      l.add("A");
      l.add("B");
      l.add("C");
      Iterator itr = l.iterator();
      while (itr.hasNext()){
         String s = (String)itr.next();
         System.out.println(s);
         if (s.equals("B")){
            // Throws RuntimeException
            itr.remove();
         }
         Thread.sleep(1000);
      }
      System.out.println(l);
   }
}

আউটপুট

A
B
Exception in thread "main" java.lang.UnsupportedOperationException

  1. জাভাতে সিরিয়ালাইজেশন এবং এক্সটারনালাইজেশনের মধ্যে পার্থক্য

  2. জাভাতে ইটারেটর এবং গণনার মধ্যে পার্থক্য

  3. জাভাতে ArrayList.clear() এবং ArrayList.removeAll() এর মধ্যে পার্থক্য?

  4. জাভাতে অ্যারেলিস্ট এবং হ্যাশসেটের মধ্যে পার্থক্য