2012-05-14 11 views
6

Sto cercando di ottenere un riassunto di LinkedHashMap in base all'indice degli elementi. Sto reinventando la ruota qui? Suona come questo dovrebbe essere da qualche parte nel API già:Come ottenere la sottomissione di LinkedHashMap per indice elemento?

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

È questo il modo di andare o ci sono alcune altre/soluzioni esistenti migliori (all'interno di Java 6 API).

+0

Come verrà utilizzata la 'mappa' restituita? Puoi usare un iteratore invece? In tal caso, è possibile restituire un iteratore personalizzato che restituisce valori (o Map.Entries) nell'intervallo di indice specificato. Tenere presente i problemi di concorrenza quando si gestiscono intervalli di indice di una raccolta. – Nate

risposta

1

NavigableMap consente di ottenere una sottotraccia indietro, ma richiede di specificare un 'da chiave' e un 'a chiave', quindi non è possibile farlo solo su indice.

Non sono a conoscenza di altri modi per farlo tramite l'API standard.

Problemi correlati