2012-05-14 48 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来做到这一点。

相关问题