2009-08-23 16 views
101

संभव डुप्लिकेट:
How do I iterate over each Entry in a Map?ट्रीमैप पर फिर से कैसे चलें?

मैं एक TreeMap से अधिक पुनरावृति करना चाहते हैं, और सभी कुंजी है जो एक विशेष मूल्य के लिए, मैं चाहता हूँ उन्हें एक नया TreeMap के लिए जोड़ा जा करने के लिए। मैं यह कैसे कर सकता हूँ?

+1

@Click: "... के लिए सभी 'कुंजी का जो एक विशेष मूल्य है ..."। क्या आप किसी दिए गए सेट में सभी चाबियों के लिए या किसी कुंजी को संतुष्ट करने वाली सभी कुंजियों के लिए हैं? –

उत्तर

176

मान लिया जाये प्रकार ट्री-मैप < स्ट्रिंग, पूर्णांक >:

for(Map.Entry<String,Integer> entry : treeMap.entrySet()) { 
    String key = entry.getKey(); 
    Integer value = entry.getValue(); 

    System.out.println(key + " => " + value); 
} 

(कुंजी और मूल्य प्रकार किसी भी clas हो सकता है

Maps.filterKeys(treeMap, new Predicate<K>() { 
    @Override 
    public boolean apply(K key) { 
    return false; //return true here if you need the entry to be in your new map 
    }}); 

आप filterEntries बजाय उपयोग कर सकते हैं यदि आप के रूप में अच्छी मूल्य की जरूरत है: निश्चित रूप से रों)

+4

एफवाईआई, एंट्रीसेट किसी भी मानचित्र के माध्यम से फिर से शुरू करने का पसंदीदा तरीका है क्योंकि एंट्रीसेट्स विनिर्देशन प्रतिबिंबित होते हैं और हमेशा मानचित्र में डेटा की स्थिति का प्रतिनिधित्व करते हैं, भले ही नक्शा नीचे बदल जाएगा। – Esko

+4

किसके द्वारा पसंदीदा? – Zed

+0

जेड के उत्तर में जोड़कर, एंट्रीसेट का उपयोग करने से उपयोगकर्ता को एक विशेष प्रविष्टि को हटाने के दौरान बिजली को हटाने की शक्ति मिल जाएगी। – SamDJava

24
//create TreeMap instance 
    TreeMap treeMap = new TreeMap(); 

    //add key value pairs to TreeMap 
    treeMap.put("1","One"); 
    treeMap.put("2","Two"); 
    treeMap.put("3","Three"); 

    /* 
     get Collection of values contained in TreeMap using 
     Collection values()   
    */ 
    Collection c = treeMap.values(); 

    //obtain an Iterator for Collection 
    Iterator itr = c.iterator(); 

    //iterate through TreeMap values iterator 
    while(itr.hasNext()) 
     System.out.println(itr.next()); 

या:

for (Map.Entry<K,V> entry : treeMap.entrySet()) { 
     V value = entry.getValue(); 
     K key = entry.getKey(); 
    } 

या:

// Use iterator to display the keys and associated values 
    System.out.println("Map Values Before: "); 
    Set keys = map.keySet(); 
    for (Iterator i = keys.iterator(); i.hasNext();) { 
    Integer key = (Integer) i.next(); 
    String value = (String) map.get(key); 
    System.out.println(key + " = " + value); 
    } 
0

Google Collections का उपयोग करना, कश्मीर संभालने अपने प्रमुख प्रकार है।

+0

यह कोई सॉर्टिंग नहीं करता है। – zyamys

5

बस सामान्य तरीके से बाहर बात करने के लिए किसी भी नक्शे पर पुनरावृति करने के लिए:

private <K, V> void iterateOverMap(Map<K, V> map) { 
    for (Map.Entry<K, V> entry : map.entrySet()) { 
     System.out.println("key ->" + entry.getKey() + ", value->" + entry.getValue()); 
    } 
    } 
संबंधित मुद्दे