2011-11-29 5 views
14

voglio qualcosa in cui posso inserire coppie chiave/valore, e l'ordine è l'ordine che inserisco le voci in.collezione java che ha coppia chiave/valore, ed è ordinata secondo inserire ordine

ho ho visto alcuni post riguardanti la mappa, ma sembra che devo scrivere il mio comparatore per loro.

Voglio il primo elemento che inserisco per essere il primo memorizzato, e il 2 ° è il 2 ° oggetto nella collezione, ecc.

+1

E ' chiamato "LinkedHashMap" –

risposta

18

Provare a usare un LinkedHashMap, dal javadocs:

tabella di hash e l'attuazione lista collegata dell'interfaccia Map, con l'ordine di iterazione prevedibile Questa implementazione è diversa da HashMap in quanto mantiene una doppiamente legata lista che passa attraverso tutte le sue voci. Questo elenco collegato definisce l'ordine di iterazione, che è normalmente l'ordine in cui le chiavi sono state inserite nella mappa (ordine di inserimento).

7

Perché non solo creare un class per contenere una chiave e un valore, quindi memorizzare nel vostro List realizzazione preferita?

class Pair { 
    Key k; 
    Value v; 
} 

List<Pair> stuff = new ArrayList<Pair>(); 

Pair p = new Pair(); 
... 
stuff.add(p); 
1

Sembra come si avrebbe bisogno di utilizzare una lista con un oggetto nome/valore

List<NameValuePair> values = new Arraylist<NameValuePair>(); 

e quindi utilizzare l'elenco come si farebbe con una lista normale

class NameValuePair { 
    private name; 
    private value; 

    ... get/set 
} 
+0

Preferisco la LinkedHashMap suggerimento, ma, se segui questa strada, guarda Map.Entry e considera seriamente di usarlo invece di definire la tua classe NameValuePair. – user949300

+1

@ user949300: 'Map.Entry ' è un'interfaccia, non una classe, e non sono a conoscenza di alcuna classe JDK pubblica che la implementa. Sono d'accordo che 'NameValuePair' dovrebbe implementarlo, però. – ruakh

+2

@ruakh Controlla AbstractMap.SimpleEntry e AbstractMap.SimpleImmutableEntry. – user949300

0

LinkedHashMap è il corretto tipo di dati struture che stai cercando! As estende la HashMap (che consente di avere un elemento in coppia chiave/valore) e mantiene una lista collegata (che ti dà ordine di inserimento) delle voci.

Verificate anche i seguenti tipi di mappe per ulteriori informazioni:

https://docs.oracle.com/javase/8/docs/api/

Vai a AbstractMap e controllare questi fuori

HashMap & TreeMap

HashTable- http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html

Problemi correlati