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