2011-01-06 84 views
2

如果我有一個包含字符串和雙精度的樹形圖。無論如何,從地圖檢索前10個鍵?迭代固定次數的樹形圖

+0

爲什麼你不能在迭代器上調用next()十次? – DJClayworth 2011-01-06 17:54:52

+0

它的工作!非常感謝。 – 2011-01-06 18:46:32

回答

4

獲取通過treeMap.entrySet().iterator()迭代器,如果你想要的鍵/值對或treeMap.keySet().iterator()如果你只是關心的鑰匙,然後調用iterator.next() 10倍或只要iterator.hasNext()回報true

List<Map.Entry<String, Double>> firstTen = new ArrayList<Map.Entry<String, Double>>(10); 
Iterator<String, Double> iterator = treeMap.entrySet().iterator(); 
for (int i = 0; iterator.hasNext() && i < 10; i++) { 
    firstTen.add(iterator.next()); 
} 
1

由於TreeMapNavigableMap,你應該看一看在接口中的方法。沒有什麼可以讓你選擇第一個n的,但你可以用鑰匙小於給定鍵等選擇所有條目

否則,我只想用一個Iteratorn迭代停止。

0

裹在列表中entrySet()並創建一個subList()

SortedMap<String,Double> treeMap = new TreeMap<String, Double>(); 
List<Entry<String, Double>> firstTen = 
    new ArrayList<Map.Entry<String,Double>>(treeMap.entrySet()) 
    .subList(0, 10); 
for(Entry<String, Double> entry : firstTen){ 
    // do something with entries 
} 

缺點:整個地圖將被複制到列表中。

0

它與dkarp和sean提供的代碼片段一起工作。但是,它也適用於DJClayworth的建議。以下是我如何解決它:

c=sorted_map.keySet(); 

    Iterator itr=c.iterator(); 
    String s=""; 
    while (i<iteratesize&&itr.hasNext()){ 
     s=(String) itr.next(); 
     System.out.println(s); 
     s=""; 
     i++; 
    } 

非常感謝大家的幫助。對此,我真的非常感激。