2009-06-30 5 views
62

मुझे ऐसी समस्या का सामना करना पड़ रहा है जिसमें कोई कठोर समाधान नहीं है।एक जावा मानचित्र प्रविष्टि को अद्यतन करना

मैं java.util.Map का उपयोग कर रहा हूं, और मैं एक मूल्य-मूल्य जोड़ी में मान को अपडेट करना चाहता हूं।

अभी, मैं इसे इस lik कर रहा हूँ:

private Map<String,int> table = new HashMap<String,int>(); 
public void update(String key, int val) { 
    if(!table.containsKey(key)) return; 
    Entry<String,int> entry; 
    for(entry : table.entrySet()) { 
     if(entry.getKey().equals(key)) { 
      entry.setValue(val); 
      break; 
     } 
    } 
} 

तो वहाँ कोई भी तरीका है ताकि मैं पूरे Map के माध्यम से पुनरावृति बिना आवश्यक Entry वस्तु मिल सकता है? या प्रविष्टि के मूल्य को जगह में अपडेट करने का कोई तरीका है? Map में setValue(String key, int val) जैसी कुछ विधि?

jrh

+0

पुनश्च है यही कारण है। मैंने इसे गलत टाइप किया है। – jrharshath

+0

आप पहले "if" कथन को हटा सकते हैं। यदि कुंजी मौजूद नहीं है तो यह अभी भी मानचित्र के माध्यम से पूर्ण पुनरावृत्ति का कारण बनता है। यदि आप इसे हटा देते हैं, तो आप अभी भी पूरे मानचित्र के माध्यम से फिर से चलेंगे और कुंजी मौजूद नहीं होने पर कुछ भी निष्पादित नहीं करेंगे। अभी अगर कुंजी मौजूद है, तो आप मानचित्र के माध्यम से फिर से शुरू करें, पाते हैं कि यह मौजूद है, और उसके बाद प्रविष्टियों के माध्यम से फिर से शुरू करें। –

उत्तर

136

क्या सिर्फ

table.put(key, val); 

साथ गलत क्या है?

+3

कुंजी पहले से मौजूद है। क्या यह एक समस्या होगी? – jrharshath

+42

नहीं, उस कुंजी के लिए पुराना मान ओवरराइट किया जाएगा। – skaffman

+2

ओह, ठंडा। मेरी इच्छा है कि यह दस्तावेज़ों में कहीं कहीं कहा गया था। शायद मैंने ठीक से नहीं पढ़ा। – jrharshath

5

तुम बस method

public Object put(Object key, Object value) 

का उपयोग करता है, तो कुंजी पहले से नक्शा तो पिछले मान दिया जाता है में उपस्थित थे।

11

यदि कुंजी मौजूद है table.put(key, val) केवल मूल्य को ओवरराइट करेगा, तो यह एक नई प्रविष्टि बनाएगा। Poof! और तुम कर रहे हो इसके table.entrySet(): :)

आप कुंजी का उपयोग करके नक्शे से मूल्य प्राप्त कर सकते हैं table.get(key); के बारे में यह

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^