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