2012-05-14 12 views
6

Estoy tratando de obtener un submapa de LinkedHashMap basado en el índice del elemento. ¿Estoy reinventando la rueda aquí? Parece que esto debería ser en algún lugar de la API ya:¿Cómo obtener submapas de LinkedHashMap por elemento índice?

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

¿Es este el camino a seguir o hay otras soluciones mejores/existentes (dentro de Java 6 API).

+0

¿Cómo se usará el 'Mapa' devuelto? ¿Puedes usar un iterador en su lugar? De ser así, podría devolver un iterador personalizado que devuelva valores (o Map.Entries) entre el rango de índice especificado. Tenga en cuenta los problemas de concurrencia al tratar con rangos de índice de una colección. – Nate

Respuesta

1

NavigableMap le permite recuperar un submapa, pero requiere que especifique una 'desde la tecla' y una 'hasta la tecla', por lo que no puede hacerlo puramente en el índice.

No conozco otra forma de hacerlo a través de la API estándar.

Cuestiones relacionadas