2009-08-23 9 views

cevap

176

tipi treemap < dize varsayarak, tamsayı >:

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

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

(anahtar ve değer türleri herhangi clas olabilir siz de değerini gerekiyorsa

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 
    }}); 

Bunun yerine filterEntries kullanabilirsiniz: K varsayarak tabii ler) Google Collections kullanma

+4

FYI, EntrySet'ler belirtim yansıtıcı olduğundan ve her zaman Harita altındaki verilerin değişmesine rağmen her zaman Haritadaki veri durumunu temsil ettiğinden, EntrySet herhangi bir Harita üzerinde yineleme yapmak için tercih edilen yoldur. – Esko

+4

Kimin tercih ettiği? – Zed

+0

Zed'in yanıtını ekleyerek, entrySet kullanarak kullanıcıya yinelenen belirli bir girişi silme gücü verilecektir. – 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()); 

veya:

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

veya:

// 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

, anahtar türüdür. "Tüm 'tuşuna en ... belirli bir değere sahip olan ...":

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()); 
    } 
    } 
+0

Bu, herhangi bir sıralama yapmaz. – zyamys

5

Sadece herhangi bir harita üzerinde yineleme yapmak jenerik yolu işaret etmek. Belirli bir Set'teki veya belirli bir yüklemi karşılayan tüm anahtarlardaki tüm anahtarlar için mi demek istiyorsunuz?