কম্পিউটার টিউটোরিয়াল

জাভাতে ArrayList এবং CopyOnWriteArrayList-এর পার্থক্য


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

ArrayList এবং CopyOnWriteArrayList-এর মধ্যে গুরুত্বপূর্ণ পার্থক্যগুলো:

ক্র. নং কী ArrayList CopyOnWriteArrayList
১ সিনক্রোনাইজেশন ArrayList সিনক্রোনাইজড নয়। CopyOnWriteArrayList সিনক্রোনাইজড, একসময়ে একই থ্রেড অ্যাক্সেস করতে পারে।
২ পারফরম্যান্স ArrayList দ্রুত, কারণ সিনক্রোনাইজেশন নেই। সিনক্রোনাইজেশন কপি-অন-রাইট অ্যারেলিস্টকে ধীর করে।
৩ ফেইল সেফটি ArrayList ইটেরেটর ফেইল-ফাস্ট, ট্রাভার্সালের সময় মডিফিকেশনে ConcurrentModificationException থ্রো করে। CopyOnWriteArrayList ফেইল-সেফ, ট্রাভার্সালের সময় মডিফিকেশন অনুমতি দেয়।
৪ এলিমেন্ট রিমুভ ArrayList ইটেরেটর ইটারেশন সময় রিমুভ অপারেশন করতে পারে। CopyOnWriteArrayList ইটারেশন সময় রিমুভ করতে UnsupportedOperationException থ্রো করে।
৫ জাভাতে পরিচয় ArrayList পুরানো, জাভা ১.২-এ যোগ হয়েছিল। CopyOnWriteArrayList জাভা ১.৫ (জাভা ৫)-এ যোগ হয়েছিল।
৬ প্যাকেজ ArrayList java.util প্যাকেজে আছে। CopyOnWriteArrayList java.util.concurrent প্যাকেজে আছে।

ArrayList vs 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. জাভাতে Serialization এবং Externalization-এর পার্থক্য

  2. জাভাতে Iterator এবং Enumeration-এর পার্থক্য

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

  4. জাভাতে ArrayList এবং HashSet-এর পার্থক্য