यह सवाल एक तरह से पहले से ही यहाँ पोस्ट किया जाता है प्रदान नहीं करता है: How to convert Map<String, String> to Map<Long, String> using guavaक्यों अमरूद नक्शा कुंजी को बदलने के लिए एक रास्ता
मुझे लगता है कि CollinD का जवाब उचित है:
बदलने के लिएअमरूद के सभी पद्धतियों का और फ़िल्टरिंग आलसी परिणाम ... फ़ंक्शन/पूर्वानुमान केवल ऑब्जेक्ट के रूप में आवश्यक होने पर लागू होता है। वे प्रतियां नहीं बनाते हैं। इसके कारण, परिवर्तन आसानी से
Set
की आवश्यकताओं को तोड़ सकता है।मान लें, उदाहरण के लिए, आपके पास
Map<String, String>
है जिसमें दोनों "1" और "01" कुंजी के रूप में हैं। वे दोनों अलगString
एस हैं, और इसलिएMap
कानूनी रूप से दोनों कुंजी के रूप में हो सकते हैं। यदि आप उन्हेंLong.valueOf(String)
का उपयोग करके बदलते हैं, तो वे दोनों1
मान पर नक्शा लगाते हैं। वे अब विशिष्ट कुंजी नहीं हैं। यदि आप मानचित्र की एक प्रति बनाते हैं और प्रविष्टियां जोड़ते हैं, तो यह कुछ भी तोड़ने वाला नहीं है, क्योंकि किसी भी डुप्लिकेट कुंजी उस कुंजी के लिए पिछली प्रविष्टि को ओवरराइट कर देगी। एक आलसीMap
को परिवर्तित किया गया, हालांकि, अद्वितीय कुंजी लागू करने का कोई तरीका नहीं होगा और इसलिएMap
का अनुबंध तोड़ देगा।
यह सच है, लेकिन वास्तव में मुझे समझ नहीं आता क्यों यह वजह से नहीं किया जाता है:
जब कुंजी परिवर्तन होता है, यदि 2 कुंजी "विलय कर दिया" कर रहे हैं, एक क्रम अपवाद हो सकता है उठाया, या हम अमरूद को इंगित करने के लिए नव गणना की कुंजी के लिए अनेक संभावित मान (failfast/फेल सेफ संभावनाओं)
हम एक Maps.transformKeys जो एक मल्टीमैप
का उत्पादन हो सकता है की किसी भी मूल्य लेने के लिए एक झंडा गुजर सकता है
क्या ऐसी कोई कमी है जो मुझे ऐसी चीजों में करने में नहीं दिखती है?
प्रोग्रामर के लिए अधिक उपयुक्त लगता है .stackexchange.com –