"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > संग्रह

संग्रह

2024-08-10 को प्रकाशित
ब्राउज़ करें:110

संग्रह इंटरफ़ेस सूचियों, वैक्टर, स्टैक, कतार, प्राथमिकता कतार और सेट के लिए सामान्य संचालन को परिभाषित करता है।

जावा कलेक्शन फ्रेमवर्क दो प्रकार के कंटेनरों का समर्थन करता है:

  • तत्वों के संग्रह को संग्रहीत करने के लिए एक को बस संग्रह कहा जाता है।
  • कुंजी/मान जोड़े को संग्रहीत करने के लिए अन्य को मानचित्र कहा जाता है।

किसी कुंजी का उपयोग करके किसी तत्व को शीघ्रता से खोजने के लिए मानचित्र कुशल डेटा संरचनाएं हैं। यहां निम्नलिखित संग्रह हैं।

  • सेटएस नॉनडुप्लिकेट तत्वों का एक समूह संग्रहीत करता है।
  • सूचीतत्वों का एक क्रमबद्ध संग्रह संग्रहित करती है।
  • स्टैकएस स्टोर ऑब्जेक्ट्स को अंतिम-इन, फर्स्ट-आउट फैशन में संसाधित किया जाता है।
  • कतारउन वस्तुओं को संग्रहीत करती है जिन्हें पहले-आओ, पहले-बाहर के तरीके से संसाधित किया जाता है।
  • PriorityQueueउन वस्तुओं को संग्रहीत करता है जिन्हें उनकी प्राथमिकताओं के क्रम में संसाधित किया जाता है।

इन संग्रहों की सामान्य विशेषताओं को इंटरफेस में परिभाषित किया गया है, और कार्यान्वयन ठोस वर्गों में प्रदान किए गए हैं, जैसा कि नीचे चित्र में दिखाया गया है।

Image description

जावा कलेक्शन फ्रेमवर्क में परिभाषित सभी इंटरफेस और कक्षाएं java.util पैकेज में समूहीकृत हैं।

जावा कलेक्शन फ्रेमवर्क का डिज़ाइन इंटरफेस, अमूर्त कक्षाओं और ठोस कक्षाओं का उपयोग करने का एक उत्कृष्ट उदाहरण है। इंटरफ़ेस रूपरेखा को परिभाषित करते हैं। अमूर्त वर्ग आंशिक कार्यान्वयन प्रदान करते हैं। ठोस वर्ग ठोस डेटा संरचनाओं के साथ इंटरफेस लागू करते हैं। एक अमूर्त वर्ग प्रदान करना जो इंटरफ़ेस को आंशिक रूप से लागू करता है, उपयोगकर्ता के लिए कोड लिखना सुविधाजनक बनाता है। उपयोगकर्ता बस एक ठोस वर्ग को परिभाषित कर सकता है जो अमूर्त वर्ग का विस्तार करता है बल्कि इंटरफ़ेस में सभी तरीकों को लागू करता है। सुविधा के लिए AbstractCollection जैसी अमूर्त कक्षाएं प्रदान की जाती हैं। इस कारण से, उन्हें सुविधा अमूर्त वर्ग कहा जाता है।

संग्रह इंटरफ़ेस वस्तुओं के संग्रह में हेरफेर करने के लिए रूट इंटरफ़ेस है। इसके सार्वजनिक तरीके नीचे चित्र में सूचीबद्ध हैं। AbstractCollection वर्ग Collection इंटरफ़ेस के लिए आंशिक कार्यान्वयन प्रदान करता है। यह Collection में add, size, और iterator तरीकों को छोड़कर सभी तरीकों को लागू करता है। इन्हें उपयुक्त ठोस उपवर्गों में कार्यान्वित किया जाता है।

Image description

संग्रह इंटरफ़ेस संग्रह में तत्वों को जोड़ने और हटाने के लिए बुनियादी संचालन प्रदान करता है। 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) {
        ArrayList collection1 = 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 क्लोनेबल इंटरफ़ेस को लागू नहीं करता है। इस प्रकार, प्राथमिकता कतारों को छोड़कर क्लोन करने योग्य के सभी उदाहरणों को क्लोन किया जा सकता है और क्लोन करने योग्य के सभी उदाहरणों को क्रमबद्ध किया जा सकता है।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/pauike/collections-3le7?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3