2011-03-24 23 views
6

मेरे पास जावा में हैशपैप है और मुझे एक स्ट्रिंग को एक विशिष्ट कुंजी में जोड़ना होगा। क्या यह कोड सही है? या मूल सामग्री को पुनर्प्राप्त करने के लिए .get विधि का आह्वान करना एक अच्छा अभ्यास नहीं है?एक हैश मैप तत्व में स्ट्रिंग कैसे संलग्न करें?

myMap.put("key", myMap.get("key") + "new content") ; 

धन्यवाद

उत्तर

13

आप मतलब है कि आप एक नया मान के साथ वर्तमान मूल्य को बदलने के लिए चाहते हैं, कि पूरी तरह से ठीक है।

बस जागरूक रहें कि यदि कुंजी मौजूद नहीं है, तो आप नए मूल्य के रूप में "शून्य सामग्री" के साथ समाप्त हो जाएंगे, जो कि आप जो चाहते थे वह हो सकता है। आप क्या करना चाहते हो सकता है:

String existing = myMap.get("key"); 
String extraContent = "new content"; 
myMap.put("key", existing == null ? extraContent : existing + extraContent); 
+0

* "मुझे एक विशिष्ट कुंजी पर एक स्ट्रिंग जोड़ने की आवश्यकता है।" * आपका समाधान मानचित्र में एक मान को जोड़ता है। – aioobe

+2

@aioobe: पैट्रिक का कोड वह कहता है कि वह क्या कहता है। – Jeremy

+0

@aioobe: मैंने व्याख्या की कि "मुझे एक विशिष्ट कुंजी से जुड़े मान में एक स्ट्रिंग जोड़ने की आवश्यकता है"। शायद ओपी स्पष्ट करेगा ... –

3

मैं जावा में एक hashmap है और मैं एक विशेष कुंजी के लिए एक स्ट्रिंग संलग्न करने के लिए की जरूरत है।

आपको मैपिंग को हटाने और अद्यतन कुंजी के साथ एक नया मैपिंग जोड़ने की आवश्यकता होगी। यह एक पंक्ति में निम्नानुसार किया जा सकता है।

myMap.put(keyToUpdate + toAppend, myMap.remove(keyToUpdate)); 

Map.remove विधि एक मानचित्रण निकाल देता है, और पहले से मैप किया गया मान देता है

1

आप ऐसा करते हैं तो अक्सर आप StringBuilder का उपयोग कर सकेंगे।

Map<String, StringBuilder> map = new LinkedHashMap<String, StringBuilder>(); 

StringBuilder sb = map.get(key); 
if (sb == null) 
    map.put(key, new StringBuilder(toAppend)); 
else 
    sb.append(toAppend); 
संबंधित मुद्दे