मुझे ऐसे संग्रह की आवश्यकता है जो कुंजी के आधार पर एक मूल्य को देख सके और इसके विपरीत। प्रत्येक मूल्य के लिए एक कुंजी है और प्रत्येक कुंजी के लिए एक मूल्य होता है। क्या वहां डेटा संरचना का उपयोग करने के लिए तैयार है जो ऐसा करता है?जावा संग्रह - अनन्य कुंजी और अद्वितीय मान
उत्तर
Google Guava से यह आपको लगता है कि यह आपके अनुरूप होगा।
एक बिमाप (या "बिडरेक्शनल मैप") एक नक्शा है जो इसके मूल्यों के साथ-साथ इसकी चाबियों की विशिष्टता को बरकरार रखता है। यह बाधा बिम्स को "इनवर्स व्यू" का समर्थन करने में सक्षम बनाती है, जो एक और बिटमैप है जिसमें इस बिटमैप के समान प्रविष्टियां हैं लेकिन उलट कुंजी और मानों के साथ।
या BidiMapApache Commons Collections से:
एक नक्शा है कि कुंजी और मूल्यों के बीच द्विदिश देखने की अनुमति देता है परिभाषित करता है।
यह विस्तारित
Map
एक मानचित्रण का प्रतिनिधित्व करता है जहां एक कुंजी एक मूल्य देख सकती है और एक मूल्य समान आसानी से एक कुंजी देख सकता है। यह इंटरफेसMap
बढ़ाता है और इसलिए मानचित्र का उपयोग कहीं भी किया जा सकता है। इंटरफ़ेस एक उलटा नक्शा दृश्य प्रदान करता है, जोBidiMap
के दोनों दिशाओं तक पूर्ण पहुंच को सक्षम बनाता है।
आप Eclipse Collections (पूर्व में जीएस संग्रह) से BiMap का उपयोग कर सकते हैं।
BiMap
एक मानचित्र है जो उपयोगकर्ताओं को दोनों दिशाओं से लुकअप करने की अनुमति देता है। एक BiMap में दोनों कुंजी और मान अद्वितीय हैं।
मुख्य कार्यान्वयन HashBiMap
है।
inverse()
BiMap.inverse()
एक दृश्य जहां कुंजी प्रकार और मान प्रकार की स्थिति लगा दिया जाता था देता है। एक नियमित रूप से मानचित्र पर
MutableBiMap<Integer, String> biMap =
HashBiMap.newWithKeysValues(1, "1", 2, "2", 3, "3");
MutableBiMap<String, Integer> inverse = biMap.inverse();
Assert.assertEquals("1", biMap.get(1));
Assert.assertEquals(1, inverse.get("1"));
Assert.assertTrue(inverse.containsKey("3"));
Assert.assertEquals(2, inverse.put("2", 4));
put()
MutableBiMap.put()
बर्ताव Map.put()
तरह, सिवाय इसके फेंक देता है जब एक डुप्लिकेट मान जोड़ा गया है।
MutableBiMap<Integer, String> biMap = HashBiMap.newMap();
biMap.put(1, "1"); // behaves like a regular put()
biMap.put(1, "1"); // no effect
biMap.put(2, "1"); // throws IllegalArgumentException
forcePut()
यह MutableBiMap.put()
तरह बर्ताव करता है, लेकिन यह चुपचाप नक्शे में कुंजी-मान पेयर डालने से पहले एक ही मूल्य के साथ नक्शा प्रविष्टि निकाल देता है।
MutableBiMap<Integer, String> biMap = HashBiMap.newMap();
biMap.forcePut(1, "1"); // behaves like a regular put()
biMap.forcePut(1, "1"); // no effect
biMap.put(1, "2"); // replaces the [1,"1"] pair with [1, "2"]
biMap.forcePut(2, "2"); // removes the [1, "2"] pair before putting
Assert.assertFalse(biMap.containsKey(1));
Assert.assertEquals(HashBiMap.newWithKeysValues(2, "2"), biMap);
नोट: मैं ग्रहण संग्रह के लिए एक committer हूँ।
स्वीकृत उत्तर BiMap
का उल्लेख करता है, लेकिन यह Google Guava पुस्तकालयों के साथ more up-to-date बन गया है।
एक
BiMap<K, V>
values()
एकSet
बनाने, एक Map<K, V>
कि
- आप के साथ
inverse()
- सुनिश्चित करता है कि मान अद्वितीय हैं 'उलटी "
BiMap<V, K>
देखने की अनुमति देता है तो, आप इस तरह के कोड के साथ समाप्त कर सकते हैं:इस वस्तु के साथ कुछ चेतावनियां:
- आप में गैर-अद्वितीय मान जोड़ने के लिए सक्षम नहीं होगा, या आप एक
IllegalArgumentException
मिलेगा। आपforcePut(key, value)
का उपयोग कर सकते हैं, लेकिन यह override the existing key-value pair होगा।
- आप में गैर-अद्वितीय मान जोड़ने के लिए सक्षम नहीं होगा, या आप एक
- 1. अनन्य कुंजी
- 2. अनन्य कुंजी बनाम प्राथमिक कुंजी?
- 3. अद्वितीय और प्राथमिक कुंजी
- 4. प्राथमिक कुंजी, अद्वितीय कुंजी और उम्मीदवार कुंजी
- 5. मोंगोस में अद्वितीय सरणी मान
- 6. समवर्ती संग्रह और अद्वितीय तत्व
- 7. mysql अद्वितीय कुंजी और सूचकांक
- 8. जावा संग्रह मुख्य/मान जोड़े है, और आदेश
- 9. एक अद्वितीय उदाहरण मान
- 10. आरएआईआई और कचरा संग्रह पारस्परिक रूप से अनन्य क्यों है?
- 11. mysql संयुक्त अद्वितीय कुंजी
- 12. एसक्यूएल अद्वितीय कुंजी सम्मिलन
- 13. अद्वितीय फ़ील्ड मान और ManyToMany रिश्तों
- 14. सेट संग्रह में डुप्लिकेट मान?
- 15. अद्वितीय मानों के साथ एक संग्रह सरणी जोड़ना
- 16. माईएसक्ल कंपाउंड कुंजी और शून्य मान
- 17. MySQL तालिका में अनन्य कुंजी बनाना
- 18. सी # शब्दकोश प्रकार अद्वितीय कुंजी और मूल्यों के साथ
- 19. क्या JQuery समर्थन शब्दकोश (कुंजी, मान) संग्रह करता है?
- 20. NHibernate समग्र कुंजी बनाम समग्र अद्वितीय प्रतिबंध
- 21. जावा संग्रह और कचरा कलेक्टर
- 22. वाराकर और अनन्य इंडेंटिफायर की तुलना करें
- 23. क्या एसक्यूएल सर्वर अनन्य कुंजी भी एक इंडेक्स है?
- 24. अद्वितीय, अद्वितीय कुंजी और कन्स्ट्रेंट 'नाम' के बीच क्या अंतर है अद्वितीय?
- 25. अनन्य मानों और सम्मिलन
- 26. कुंजी-मान एक एनएसएमयूटेबलसेट
- 27. व्यर्थ मान अद्वितीय नहीं है
- 28. neo4j नोड्स में अद्वितीय मान
- 29. एक अनन्य इंडेक्स को एक अनन्य इंडेक्स में बदलें
- 30. जावा में अद्वितीय कुंजी के साथ हैश मैप कैसे हो सकता है?