वहाँ किसी भी तरह से है कि मैं की तरह एक Map
वस्तु के लिए एक पूरी Entry
वस्तु डाल सकता है?एक मानचित्र में प्रवेश कैसे करें?</p> <pre><code>map.put(key,value); </code></pre> <p>: बजाय की तरह एक कुंजी-मान पेयर पास करने का</p> <pre><code>map.put(entry); </code></pre> <p>:
13
A
उत्तर
3
मैं मानचित्र इंटरफ़ेस तरीकों की खोज नहीं की लेकिन कोई विधि है कि एक प्रवेश लेता है और नक्शे में कहते है। इसलिए मैंने थोड़ा सा विरासत और जावा 8 इंटरफेस का उपयोग करके इसे लागू किया है।
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Maps {
// Test method
public static void main(String[] args) {
Map.Entry<String, String> entry1 = newEntry("Key1", "Value1");
Map.Entry<String, String> entry2 = newEntry("Key2", "Value2");
System.out.println("HashMap");
MyMap<String, String> hashMap = new MyHashMap<>();
hashMap.put(entry1);
hashMap.put(entry2);
for (String key : hashMap.keySet()) {
System.out.println(key + " = " + hashMap.get(key));
}
System.out.println("\nTreeMap");
MyMap<String, String> treeMap = new MyTreeMap<>();
treeMap.put(entry1);
treeMap.put(entry2);
for (String key : treeMap.keySet()) {
System.out.println(key + " = " + treeMap.get(key));
}
}
/**
* Creates a new Entry object given a key-value pair.
* This is just a helper method for concisely creating a new Entry.
* @param key key of the entry
* @param value value of the entry
*
* @return the Entry object containing the given key-value pair
*/
private static <K,V> Map.Entry<K,V> newEntry(K key, V value) {
return new AbstractMap.SimpleEntry<>(key, value);
}
/**
* An enhanced Map interface.
*/
public static interface MyMap<K,V> extends Map<K,V> {
/**
* Puts a whole entry containing a key-value pair to the map.
* @param entry
*/
public default V put(Entry<K,V> entry) {
return put(entry.getKey(), entry.getValue());
}
}
/**
* An enhanced HashMap class.
*/
public static class MyHashMap<K,V> extends HashMap<K,V> implements MyMap<K,V> {}
/**
* An enhanced TreeMap class.
*/
public static class MyTreeMap<K,V> extends TreeMap<K,V> implements MyMap<K,V> {}
}
MyMap
इंटरफेस सिर्फ एक अंतरफलक है कि एक और विधि, public default V put(Entry<K,V> entry)
जोड़कर Map
इंटरफ़ेस फैली हुई है। अलावा सिर्फ विधि को परिभाषित करने से, एक डिफ़ॉल्ट कार्यान्वयन भी कोडित है। ऐसा करने से, हम MyMap
इंटरफ़ेस लागू करने और हमारी पसंद के मानचित्र कार्यान्वयन वर्ग को विस्तारित करने वाली नई कक्षा को परिभाषित करके इंटरफ़ेस लागू करने वाले किसी भी वर्ग में इस विधि को जोड़ सकते हैं। एक ही पंक्ति में सभी ! यह जहां दो कक्षाएं प्रत्येक HashMap और ट्री-मैप कार्यान्वयन विस्तार बनाई गई हैं इसके बाद के संस्करण कोड के तल में प्रदर्शित किया गया है।
संबंधित मुद्दे
- 1. रीडायरेक्टर "<<<"?
- 2. GIT भ्रष्ट फ़ाइलें (<<<<<<<< HEAD)
- 3. <% $, <% @, <% =, <% # ... सौदा क्या है?
- 4. <? के बजाय php <?
- 5. 'ऑपरेटर <<' के लिए 'std :: cout <<' में अस्पष्ट अधिभार <<
- 6. हास्केल/फ्रीज <= <और = << एसोसिएटिविटी
- 7. cout << "привет"; या wcout << एल "привет";
- 8. cout << स्ट्रिंगस्ट्रीम
- 9. PHP व्यंजक <<< EOB
- 10. >>>>,> |, ||, | <, <, <<
- 11. प्रश्न <<
- 12. पीएचपी: <<< ob_start बनाम
- 13. PHP क्या <<< मतलब है?
- 14. ईजेएस: <% = बनाम <% -
- 15. अंतर << a_value
- 16. एक्सएमएल में <ArrayOf> की सूची <<
- 17. कैसे बचें << - असाइन
- 18. <-
- 19. <<बजाय << स्ट्रीम आउटपुट में संकलन क्यों करता है?
- 20. Enumerable.ToList <>() <>
- 21. AngularJS त्रुटि अज्ञात प्रदाता: $$ jqLiteProvider <- $$ jqLite <- $ animateCss <- $ uibModalStack <- $ uibModalStack <- $ uibModal
- 22. मैं अदालत << MyClass
- 23. एएसपी.Net में, <% = और <% #
- 24. एनालॉग के `<<% ~` Traversal
- 25. ऑपरेटर << ओवरलोडिंग ओस्ट्रीम
- 26. ओवरलोडिंग ऑपरेटर << - सी ++
- 27. एक म्यूटेक्स <Option<>>
- 28. DOMDocument को <as & lt
- 29. तरह</p> <pre><code><input id="picker" type="date"> </code></pre> <p>क्रोम
- 30. ऑपरेटर बनाना << आभासी?
एक कारण 'map.put (entry.getKey(), entry.getValue())' असंतोषजनक है? – ajb
क्योंकि 'map.put (entry.getKey(), entry.getValue())' निरर्थक है और हो सकता है सिर्फ 'map.put (प्रवेश)' जो अधिक संक्षिप्त और पढ़ी जा सकती है कम कर दिया। मेरी राय भी में, वहाँ एक 'वी पुट (एंट्री प्रविष्टि)' विधि '' java.util' पैकेज के Map' इंटरफेस में होना चाहिए। –
pgmank
_When_ आपको ऐसी विधि की आवश्यकता होगी - उपयोग केस क्या होगा? मुझे लगता है कि एपीआई में नहीं है, क्योंकि [YAGNI] (https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it)। –