2012-05-14 85 views
6

我想根據元素索引得到LinkedHashMap的子地圖。我在這裏重塑車輪嗎?聽起來這應該在API是冥冥中早已:如何通過元素索引獲取LinkedHashMap的子圖?

public <K,V> LinkedHashMap<K,V> subMap(LinkedHashMap<K,V> map, int fromIndex, int toIndex) { 
    LinkedHashMap<K,V> result = new LinkedHashMap<K,V>(); 

    int i=0; 
    for(Map.Entry<K,V> entry : map.entrySet()) { 
     if(i >= fromIndex && i < toIndex) { 
      result.put(entry.getKey(), entry.getValue()); 
     } 
     i++; 
    } 

    return result; 
} 

這是要走的路還是有(在Java 6 API)一些其他更好的/現有的解決方案。

+0

如何使用返回的'Map'?你可以使用迭代器嗎?如果是這樣,您可以返回一個自定義迭代器,該自定義迭代器返回指定索引範圍之間的值(或Map.Entries)。在處理集合的索引範圍時請記住併發性問題。 – Nate

回答

1

NavigableMap允許你得到一個子映射,但它要求你指定一個'from key'和一個'to key',所以你不能單純的在索引上做它。

我不知道有任何其他方式通過標準的API來做到這一點。

相關問題