Java Programming

जावा में दक्ष बहुसमुच्चय कार्यान्वयन

Spread the love

एक मल्टीसेट, जिसे बैग भी कहा जाता है, एक ऐसा संग्रह है जो एक ही तत्व के कई उदाहरणों की अनुमति देता है। सेट के विपरीत, जहाँ प्रत्येक तत्व अद्वितीय होता है, मल्टीसेट में डुप्लिकेट हो सकते हैं। जबकि जावा का मानक पुस्तकालय सीधे मल्टीसेट कार्यान्वयन प्रदान नहीं करता है, कई दृष्टिकोण इस कार्यक्षमता को कुशलतापूर्वक प्राप्त कर सकते हैं।

विषयसूची

जावा में मल्टीसेट को कार्यान्वित करना

जावा में मल्टीसेट बनाने के लिए कई तरीके मौजूद हैं। इष्टतम विकल्प आपकी विशिष्ट आवश्यकताओं और प्राथमिकताओं पर निर्भर करता है:

  1. HashMap का उपयोग करना: यह एक सीधा-सादा तरीका है। एक HashMap प्रत्येक तत्व को उसकी गणना से मैप करता है। एक तत्व जोड़ने से उसकी गणना बढ़ जाती है; एक तत्व को हटाने से यह घट जाती है (शून्य गणना को उचित रूप से संभालना)।
  2. TreeMap का उपयोग करना: HashMap के समान, लेकिन TreeMap प्राकृतिक क्रम या एक कस्टम Comparator के आधार पर क्रमबद्ध क्रम बनाए रखता है। जब तत्व क्रम महत्वपूर्ण हो तो उपयोगी होता है।
  3. Guava के Multiset का उपयोग करना: Guava लाइब्रेरी एक मजबूत, अनुकूलित Multiset कार्यान्वयन प्रदान करती है। इसकी सुविधा और दक्षता के कारण यह आम तौर पर पसंदीदा तरीका है।
  4. एक कस्टम क्लास बनाना: जटिल परिदृश्यों या अनूठी आवश्यकताओं के लिए, एक कस्टम क्लास अधिकतम लचीलापन प्रदान करता है लेकिन अधिक विकास प्रयास की मांग करता है।

HashMap कार्यान्वयन उदाहरण

यहाँ HashMap का उपयोग करके एक बुनियादी मल्टीसेट कार्यान्वयन दिया गया है:


import java.util.HashMap;
import java.util.Map;

public class MultisetHashMap {
    private Map<String, Integer> elements;

    public MultisetHashMap() {
        elements = new HashMap<>();
    }

    public void add(String element) {
        elements.put(element, elements.getOrDefault(element, 0) + 1);
    }

    public void remove(String element) {
        if (elements.containsKey(element)) {
            int count = elements.get(element);
            if (count > 1) {
                elements.put(element, count - 1);
            } else {
                elements.remove(element);
            }
        }
    }

    public int getCount(String element) {
        return elements.getOrDefault(element, 0);
    }

    public static void main(String[] args) {
        MultisetHashMap multiset = new MultisetHashMap();
        multiset.add("apple");
        multiset.add("banana");
        multiset.add("apple");
        multiset.add("apple");
        System.out.println("Count of apples: " + multiset.getCount("apple")); // Output: 3
        multiset.remove("apple");
        System.out.println("Count of apples after removal: " + multiset.getCount("apple")); // Output: 2
    }
}

Guava के Multiset का लाभ उठाना

Guava का Multiset एक साफ, अधिक कुशल समाधान प्रदान करता है:


import com.google.common.collect.HashMultiset;
import com.google.common.collect.Multiset;

public class MultisetGuava {
    public static void main(String[] args) {
        Multiset<String> multiset = HashMultiset.create();
        multiset.add("apple");
        multiset.add("banana");
        multiset.add("apple");
        multiset.add("apple");
        System.out.println("Count of apples: " + multiset.count("apple")); // Output: 3
        multiset.remove("apple");
        System.out.println("Count of apples after removal: " + multiset.count("apple")); // Output: 2
        System.out.println("Size of multiset: " + multiset.size()); //Output: 3

        for(String element : multiset){
            System.out.println("Element: " + element + ", Count: " + multiset.count(element));
        }
    }
}

अपने प्रोजेक्ट की बिल्ड फ़ाइल में Guava निर्भरता को शामिल करना याद रखें।

सही दृष्टिकोण चुनना

अधिकांश अनुप्रयोगों के लिए, Guava का Multiset इसकी मजबूती और दक्षता के कारण अनुशंसित है। HashMap दृष्टिकोण सरल परिदृश्यों के लिए उपयुक्त है जहाँ आपको Guava की अतिरिक्त सुविधाओं की आवश्यकता नहीं है। एक कस्टम क्लास केवल अत्यधिक विशिष्ट स्थितियों के लिए आवश्यक है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *