2012-05-14 2 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.Entries) между указанным диапазоном индексов. Помните о проблемах параллелизма при работе с диапазонами индексов коллекции. – Nate

ответ

1

NavigableMap позволяет получить подкарту назад, но для этого требуется указать «от ключа» и «ключ», поэтому вы не можете делать это только по индексу.

Я не знаю другого способа сделать это с помощью стандартного API.

Смежные вопросы