ArrayList और CopyOnWriteArrayList दोनों जावा में सूची इंटरफ़ेस का कार्यान्वयन हैं। लेकिन कुछ अंतर भी हैं।
ArrayList और CopyOnWriteArrayList के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।
वरिष्ठ। नहीं. | कुंजी | <वें शैली="पाठ्य-संरेखण:केंद्र;">ऐरेलिस्टवें> <वें शैली ="पाठ-संरेखण:केंद्र;">CopyOnWriteArrayList||
---|---|---|---|
1 | सिंक्रनाइज़ेशन | ArrayList प्रकृति में सिंक्रनाइज़ नहीं है। | CopyOnWriteArrayList दूसरी ओर प्रकृति में सिंक्रनाइज़ है यानी एक समय में केवल एक थ्रेड ऑब्जेक्ट तक पहुंच सकता है। |
2 | प्रदर्शन | ArrayList तेज है क्योंकि इसके संचालन में कोई सिंक्रनाइज़ेशन नहीं है। | सिंक्रनाइज़ेशन, CopyOnWriteArrayList को प्रदर्शन में धीमा बनाता है। |
3 | असफल सुरक्षा | ArrayList इटरेटर तेजी से विफल हो जाते हैं और ट्रैवर्स के दौरान संशोधन पर ConcurrentModificationException को फेंक देते हैं। | CopyOnWriteArrayList विफल-सुरक्षित हैं और ट्रैवर्स के दौरान संशोधन की अनुमति देते हैं। |
4 | तत्व निकालें | ArrayList का एक पुनरावर्तक पुनरावृत्ति के दौरान निष्कासन ऑपरेशन कर सकता है। | CopyOnWriteArrayList पुनरावृति के दौरान निष्कासन कार्रवाई नहीं कर सकता है, अन्यथा यह रन-टाइम अपवाद को फेंक देगा UnsupportedOperationException। |
5 | जावा में परिचय | ArrayList, CopyOnWriteArrayList से पुराना है क्योंकि इसे जावा संस्करण 1.2 में जोड़ा गया था। | CopyOnWriteArrayList वर्ग जावा संस्करण 1.5 (या जावा 5) में जोड़ा गया था। |
6 | पैकेज | ArrayList वर्ग java.util पैकेज में मौजूद है। | CopyOnWriteArrayList वर्ग java.util.concurrent पैकेज में मौजूद है। |
ArrayList बनाम CopyOnWriteArrayList का उदाहरण
ArrayListDemo.java
आयात java.util.*;सार्वजनिक वर्ग ArrayListDemo{सार्वजनिक स्थैतिक शून्य मुख्य(स्ट्रिंग[] args){ ArrayList l =new ArrayList (); एल.एड ("ए"); एल.एड ("बी"); एल.एड ("सी"); इटरेटर आईटीआर =एल.इटरेटर (); जबकि (itr.hasNext ()) {स्ट्रिंग एस =(स्ट्रिंग) itr.next (); अगर (s.equals("B")){ itr.remove(); } } System.out.println(l); }}
आउटपुट
[ए,सी]
उदाहरण
CopyOnWriteArrayListDemo.java
आयात करें सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) इंटरप्टेड एक्सेप्शन फेंकता है {l.add ("ए"); एल.एड ("बी"); एल.एड ("सी"); इटरेटर आईटीआर =एल.इटरेटर (); जबकि (itr.hasNext ()) {स्ट्रिंग एस =(स्ट्रिंग) itr.next (); System.out.println(s); अगर (s.equals("B")){ // RuntimeException फेंकता है itr.remove (); } थ्रेड.स्लीप (1000); } System.out.println(l); }}आउटपुट
एबीएक्सप्शन इन थ्रेड "मेन" java.lang.UnsupportedOperationException