2012-01-18 10 views
59

मैं एंड्रॉइड विकास के लिए बहुत नया हूं, और मैं एंड्रॉइड नमूना प्रोजेक्ट में हैश मैप का उपयोग करने की कोशिश कर रहा हूं। अब, एंड्रॉइड सीखने के लिए नमूना परियोजना कर रहा हूँ। मैं सिर्फ हैश मैप में कुंजी और मान स्टोर करता हूं, मैं संपादन दृश्य में कुंजी और उनके मान दिखाना चाहता हूं। मैंने अपने नमूना परियोजना में कोड नीचे दिए गए। लेकिन, पहली कुंजी और मूल्य केवल संपादन दृश्य में प्रिंटिंग।एंड्रॉइड में हैश मैप से सभी कुंजी और मूल्य कैसे मुद्रित करें?

Map<String, String> map = new HashMap<String,String>(); 
    map.put("iOS", "100"); 
    map.put("Android", "101"); 
    map.put("Java", "102"); 
    map.put(".Net", "103"); 

    Set keys = map.keySet(); 

    for (Iterator i = keys.iterator(); i.hasNext();) { 
     String key = (String) i.next(); 
     String value = (String) map.get(key); 
     textview.setText(key + " = " + value); 
    } 

EditView iOS = 100 में केवल मुद्रण है। मैं संपादन कुंजी में सभी चाबियाँ और उनके मूल्य मुद्रित करना चाहता हूं। क्या कोई मुझे बता सकता है कि मैं गलत कहां कर रहा हूं? अग्रिम में धन्यवाद।

+0

देखें इस सवाल और कई अन्य लोगों: http://stackoverflow.com/questions/1066589/ जावा-इटरेट-थ्रू-हैशमप – Anton

+0

हैलो गोपीनाथ !!हैश मैप कुंजी मान लाने और सेट करने के लिए आपका कोड सही है लेकिन आप इन मान को केवल एक टेक्स्ट व्यू पर सेट कर रहे हैं। –

+1

सभी को धन्यवाद। मुझे जवाब मिला। एक बार फिर मैं आपको धन्यवाद देता हूं। – Gopinath

उत्तर

7

सबसे पहले, आपके कोड में त्रुटियां हैं, यानी। आप लूप में अर्धविराम और समापन कोष्ठक खो रहे हैं।

फिर, यदि आप दृश्य में मूल्य जोड़ने की कोशिश कर रहे हैं, तो आपको .setText() के बजाय textview.appendText() का उपयोग करना चाहिए। how to change text in Android TextView

+2

यह सबसे अच्छा जवाब है, लेकिन जावा 5 के लिए जावा 5 का उपयोग करने के लिए @Shadow भी देखें। ठीक से प्रवेश करें। –

164
for (Map.Entry<String,String> entry : map.entrySet()) { 
    String key = entry.getKey(); 
    String value = entry.getValue(); 
    // do stuff 
} 
+2

ग्रेट जॉब मैन, आप मुझे बचाओ :) – delive

1
String text=""; 

    for (Iterator i = keys.iterator(); i.hasNext() 
     { 
      String key = (String) i.next(); 
      String value = (String) map.get(key); 
      text+=key + " = " + value; 
     } 

     textview.setText(text); 
12

यह क्योंकि आपके TextView हर यात्रा और previuos मूल्य फेंक दिया पर नया पाठ प्राप्त है:

यहाँ एक ऐसी ही सवाल ही नहीं है। स्ट्रिंगबिल्डर द्वारा तारों को संयोजित करें और लूप के बाद टेक्स्ट व्यू मान सेट करें।

for (Map.Entry<String, String> e : map.entrySet()) { 
    //to get key 
    e.getKey(); 
    //and to get value 
    e.getValue(); 
} 
2

इस कोड का परीक्षण किया और काम कर रहा है: इसके अलावा, आप पाश के इस प्रकार का उपयोग कर सकते हैं।

public void dumpMe(Map m) { dumpMe(m, ""); } 
private void dumpMe(Map m, String padding) { 
    Set s = m.keySet(); 
    java.util.Iterator ir = s.iterator(); 
    while (ir.hasNext()) { 
    String key = (String) ir.next(); 
    Object value = m.get(key); 
    if (value == null) continue; 
    if (value instanceof Map) { 
     System.out.println (padding + key + " = {"); 
     dumpMe((Map)value, padding + " "); 
     System.out.println(padding + "}");   
    } 
    else if (value instanceof String || 
      value instanceof Integer || 
      value instanceof Double || 
      value instanceof Float || 
      value instanceof Long) { 

     System.out.println(padding + key + " = " + value.toString()); 
    } 
    else { 
     System.out.println(padding + key + " = UNKNOWN OBJECT: " + value.toString()); 
     // You could also throw an exception here 
    }  
    } // while 

} // dumpme 

चार्ल्स।

+0

धन्यवाद, यह मेरे यूटिल – moberme

1

आप इस कोड का उपयोग कर सकते हैं:

for (Object variableName: mapName.keySet()){ 
    variableKey += variableName + "\n"; 
    variableValue += mapName.get(variableName) + "\n"; 
} 
System.out.println(variableKey + variableValue); 

इस कोड को सुनिश्चित करें कि सभी चाबियाँ एक चर में जमा हो जाती है और फिर मुद्रित कर देगा!

12
HashMap <Integer,Integer> hm = new HashMap<Integer,Integer>(); 

Set<Integer> keys = hm.keySet(); //get all keys 
for(Integer i: keys) 
{ 
    System.out.println(hm.get(i)); 
} 
1
public void dumpMe(Map m) { dumpMe(m, ""); } 

private void dumpMe(Map m, String padding) 
{ 
    Set s = m.keySet(); 
    java.util.Iterator ir = s.iterator(); 
    while (ir.hasNext()) 
    { 
     String key = (String) ir.next(); 
     AttributeValue value = (AttributeValue)m.get(key); 
     if (value == null) 
      continue; 
     if (value.getM() != null) 
     { 
      System.out.println (padding + key + " = {"); 
      dumpMe((Map)value, padding + " "); 
      System.out.println(padding + "}");   
     } 
     else if (value.getS() != null || 
       value.getN() != null) 
     { 
      System.out.println(padding + key + " = " + value.toString()); 
     } 
     else 
     { 
      System.out.println(padding + key + " = UNKNOWN OBJECT: " + value.toString()); 
      // You could also throw an exception here 
     }  
    } // while 
} 

//This code worked for me. 
+0

में जोड़ा गया है कृपया देखें [उत्तर] – JimHawkins

3

जावा 8 के साथ:

map.keySet().forEach(key -> System.out.println(key + "->" + result.get(key))); 
+0

क्या आप इस कोड को प्रश्न का उत्तर देने के स्पष्टीकरण में [संपादित करें] क्या कर सकते हैं? कोड-केवल उत्तर [निराश] (http://meta.stackexchange.com/q/148272/274165) हैं, क्योंकि वे समाधान नहीं सिखाते हैं। –

+0

ओपी सभी चाबियाँ और मूल्य जोड़े मुद्रित करना चाहता है। मुझे नहीं लगता कि यहां कोई स्पष्टीकरण की आवश्यकता है। यह एक बहुत पुराना धागा है, पहले ही उत्तर दिया गया है, और कोई मस्तिष्क की बात भी नहीं है। अगर कोई जावा 8 में समाधान ढूंढ रहा है, तो मैंने पहले ही लिखा है, वह ऐसा कुछ कर सकता है। – mdev

2

आप यह आसान Gson के साथ क्या कर सकते हैं:

Log.i(TAG, "SomeText: " + new Gson().toJson(yourMap)); 

परिणाम की तरह दिखाई देगा :

I/YOURTAG: SomeText: {"key1":"value1","key2":"value2"} 
0

जो कोई पता लगाने के लिए क्या आपके HashMap की सामग्री है इस पर क्लिक किया, तो toString विधि (docs) वास्तव में सबसे वस्तुओं के साथ काम करता है। (ध्यान दें: एक जावा सरणी एक वस्तु नहीं है!)

तो यह woks डिबगिंग उद्देश्यों के लिए बिल्कुल ठीक:

System.out.println(myMap.toString()); 

>>> {key1=value1, key2=value2} 
संबंधित मुद्दे