2010-08-21 14 views
15

desideroLinkedHashSet o ArrayList

  1. Evitare duplicato voce di essere inserito.
  2. Quando si esegue l'iterazione della classe di raccolta, l'articolo restituito è uguale all'ordine di inserimento.

Posso sapere, quale cosa dovrei considerare, per scegliere ArrayList (esecuzione esplicita contiene controllo prima dell'inserimento) o LinkedHashSet?

Grazie.

risposta

18

Utilizzare sicuramente LinkedHashSet. È fatto per quello che ti serve. La ricerca nell'intero ArrayList ogni volta che è necessario inserire qualcosa sarà performance killer (O (n) ogni volta))

+0

Naturalmente le prestazioni dipenderanno da dimensioni, frequenza delle operazioni, utilizzo della memoria, ecc. –

4

Utilizzare LinkedHashSet se non si desidera inserire elementi duplicati.

+0

E ne conserva anche ordine di inserimento http://download.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html – crowne

2

A LinkedHashSet sembra adattarsi perfettamente al conto.

Quando si costruiscono i propri oggetti e si prevede di utilizzarli in una raccolta come LinkedHashSet qui. Non dimenticare di sovrascrivere sia equals e hashcode per l'articolo che stai per memorizzare in esso.

2

Si prega di controllare questo fuori: http://wiki3.cosc.canterbury.ac.nz/images/e/e9/JavaCollections.png

LinkedHashSet è quello che serve, perché è un'implementazione dell'interfaccia Set. Set ha una bellissima abitudine: non consente duplicati di default. Quindi, abbiamo finito con il tuo 1.

Che dire di 2? Sappiamo che abbiamo bisogno di un'implementazione Set, ma quale?

HashMap - è possibile memorizzare K, coppie V, ma non c'è nessun ordine.

TreeSet - questa è la soluzione più lenta, perché utilizza un metodo compareTo per mantenere ordinati e ordinati tutti gli elementi. Questo è il motivo per cui puoi passare un comparatore ad esso, quando stai costruendo un TreeSet.

LinkedHashSet - Restituisce gli elementi in ordine di INSERIMENTO. È la versione ordinata di un HashSet.

Troverete una descrizione fresco qui: http://java67.blogspot.co.uk/2014/01/when-to-use-linkedhashset-vs-treeset-vs-hashset-java.html?_sm_au_=iVVMtMLHSDQ5P0P7