संग्रह इंटरफ़ेस सूचियों, वैक्टर, स्टैक, कतार, प्राथमिकता कतार और सेट के लिए सामान्य संचालन को परिभाषित करता है।
जावा कलेक्शन फ्रेमवर्क दो प्रकार के कंटेनरों का समर्थन करता है:
किसी कुंजी का उपयोग करके किसी तत्व को शीघ्रता से खोजने के लिए मानचित्र कुशल डेटा संरचनाएं हैं। यहां निम्नलिखित संग्रह हैं।
इन संग्रहों की सामान्य विशेषताओं को इंटरफेस में परिभाषित किया गया है, और कार्यान्वयन ठोस वर्गों में प्रदान किए गए हैं, जैसा कि नीचे चित्र में दिखाया गया है।
जावा कलेक्शन फ्रेमवर्क में परिभाषित सभी इंटरफेस और कक्षाएं java.util पैकेज में समूहीकृत हैं।
जावा कलेक्शन फ्रेमवर्क का डिज़ाइन इंटरफेस, अमूर्त कक्षाओं और ठोस कक्षाओं का उपयोग करने का एक उत्कृष्ट उदाहरण है। इंटरफ़ेस रूपरेखा को परिभाषित करते हैं। अमूर्त वर्ग आंशिक कार्यान्वयन प्रदान करते हैं। ठोस वर्ग ठोस डेटा संरचनाओं के साथ इंटरफेस लागू करते हैं। एक अमूर्त वर्ग प्रदान करना जो इंटरफ़ेस को आंशिक रूप से लागू करता है, उपयोगकर्ता के लिए कोड लिखना सुविधाजनक बनाता है। उपयोगकर्ता बस एक ठोस वर्ग को परिभाषित कर सकता है जो अमूर्त वर्ग का विस्तार करता है बल्कि इंटरफ़ेस में सभी तरीकों को लागू करता है। सुविधा के लिए AbstractCollection जैसी अमूर्त कक्षाएं प्रदान की जाती हैं। इस कारण से, उन्हें सुविधा अमूर्त वर्ग कहा जाता है।
संग्रह इंटरफ़ेस वस्तुओं के संग्रह में हेरफेर करने के लिए रूट इंटरफ़ेस है। इसके सार्वजनिक तरीके नीचे चित्र में सूचीबद्ध हैं। AbstractCollection वर्ग Collection इंटरफ़ेस के लिए आंशिक कार्यान्वयन प्रदान करता है। यह Collection में add, size, और iterator तरीकों को छोड़कर सभी तरीकों को लागू करता है। इन्हें उपयुक्त ठोस उपवर्गों में कार्यान्वित किया जाता है।
संग्रह इंटरफ़ेस संग्रह में तत्वों को जोड़ने और हटाने के लिए बुनियादी संचालन प्रदान करता है। add विधि संग्रह में एक तत्व जोड़ती है। addAll विधि निर्दिष्ट संग्रह के सभी तत्वों को इस संग्रह में जोड़ती है। निकालें विधि संग्रह से एक तत्व को हटा देती है। removeAll विधि इस संग्रह से उन तत्वों को हटा देती है जो निर्दिष्ट संग्रह में मौजूद हैं। retainAll विधि इस संग्रह में उन तत्वों को बरकरार रखती है जो निर्दिष्ट संग्रह में भी मौजूद हैं। ये सभी विधियाँ बूलियन लौटाती हैं। यदि विधि निष्पादन के परिणामस्वरूप संग्रह बदल जाता है, तो रिटर्न मान true है। clear() विधि बस संग्रह से सभी तत्वों को हटा देती है।
तरीके addAll, removeAll, और retainAll सेट यूनियन, अंतर और इंटरसेक्शन ऑपरेशंस के समान हैं।
संग्रह इंटरफ़ेस विभिन्न क्वेरी ऑपरेशन प्रदान करता है। आकार विधि संग्रह में तत्वों की संख्या लौटाती है। contains विधि यह जांच करती है कि संग्रह में निर्दिष्ट तत्व है या नहीं। containsAll विधि यह जांच करती है कि संग्रह में निर्दिष्ट संग्रह के सभी तत्व शामिल हैं या नहीं। यदि संग्रह खाली है तो isEmpty विधि true लौटाती है।
Collection इंटरफ़ेस toArray() विधि प्रदान करता है, जो संग्रह के लिए एक सरणी प्रतिनिधित्व लौटाता है।
Collection इंटरफ़ेस में कुछ तरीकों को ठोस उपवर्ग में लागू नहीं किया जा सकता है। इस मामले में, विधि java.lang.UnsupportedOperationException, RuntimeException का एक उपवर्ग फेंक देगी। यह एक अच्छा डिज़ाइन है जिसे आप अपने प्रोजेक्ट में उपयोग कर सकते हैं। यदि किसी विधि का उपवर्ग में कोई अर्थ नहीं है, तो आप इसे निम्नानुसार कार्यान्वित कर सकते हैं:
सार्वजनिक शून्य someMethod() {
नया UnsupportedOperationException फेंकें
("विधि समर्थित नहीं");
}
नीचे दिया गया कोड Collection इंटरफ़ेस में परिभाषित तरीकों का उपयोग करने के लिए एक उदाहरण देता है।
package demo; import java.util.*; public class TestCollection { public static void main(String[] args) { ArrayListcollection1 = new ArrayList(); collection1.add("New York"); collection1.add("Atlanta"); collection1.add("Dallas"); collection1.add("Madison"); System.out.println("A list of cities in collection1:"); System.out.println(collection1); System.out.println("\nIs Dallas in collection1? " collection1.contains("Dallas")); collection1.remove("Dallas"); System.out.println("\n" collection1.size() " cities are in collection1 now"); Collection collection2 = new ArrayList(); collection2.add("Seattle"); collection2.add("Portland"); collection2.add("Los Angeles"); collection2.add("Atlanta"); System.out.println("\nA list of cities in collection2:"); System.out.println(collection2); ArrayList c1 = (ArrayList )(collection1.clone()); c1.addAll(collection2); System.out.println("\nCities in collection1 or collection2: "); System.out.println(c1); c1 = (ArrayList )(collection1.clone()); c1.retainAll(collection2); System.out.print("\nCities in collection1 and collection2: "); System.out.println(c1); c1 = (ArrayList )(collection1.clone()); c1.removeAll(collection2); System.out.print("\nCities in collection1, but not in 2: "); System.out.println(c1); } }
संग्रह1 में शहरों की सूची:
[न्यूयॉर्क, अटलांटा, डलास, मैडिसन]
क्या डलास संग्रह1 में है? सत्य
3 शहर अभी संग्रह1 में हैं
संग्रह2 में शहरों की सूची:
[सिएटल, पोर्टलैंड, लॉस एंजिल्स, अटलांटा]
संग्रह1 या संग्रह2 में शहर:
[न्यूयॉर्क, अटलांटा, मैडिसन, सिएटल, पोर्टलैंड, लॉस एंजिल्स, अटलांटा]
संग्रह1 और संग्रह2 में शहर: [अटलांटा]
संग्रह1 में शहर, लेकिन 2 में नहीं: [न्यूयॉर्क, मैडिसन]
प्रोग्राम ArrayList (पंक्ति 7) का उपयोग करके एक ठोस संग्रह ऑब्जेक्ट बनाता है, और Collection इंटरफ़ेस के contains विधि (पंक्ति 16), को आमंत्रित करता है। हटाएं विधि (पंक्ति 18), आकार विधि (पंक्ति 19), addAll विधि (पंक्ति 31), retainAll विधि (पंक्ति 36), और RemoveAll विधि (पंक्ति 41).
इस उदाहरण के लिए, हम ArrayList का उपयोग करते हैं। आप प्रतिस्थापित करने के लिए संग्रह के किसी भी ठोस वर्ग का उपयोग कर सकते हैं जैसे कि HashSet, LinkedList, वेक्टर, और Stack ArrayList Collection इंटरफ़ेस में परिभाषित इन तरीकों का परीक्षण करने के लिए।
प्रोग्राम एक सरणी सूची (पंक्तियाँ 30, 35, 40) की एक प्रति बनाता है। इसका उद्देश्य मूल सरणी सूची को बरकरार रखना है और इसकी प्रतिलिपि का उपयोग addAll, retainAll, और RemoveAll संचालन करने के लिए करना है।
जावा कलेक्शन फ्रेमवर्क में सभी ठोस वर्ग java.lang.Cloneable और java.io.Serializable इंटरफेस को लागू करते हैं, सिवाय इसके कि java.util.PriorityQueue क्लोनेबल इंटरफ़ेस को लागू नहीं करता है। इस प्रकार, प्राथमिकता कतारों को छोड़कर क्लोन करने योग्य के सभी उदाहरणों को क्लोन किया जा सकता है और क्लोन करने योग्य के सभी उदाहरणों को क्रमबद्ध किया जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3