2010-08-21 16 views
15

DeseoLinkedHashSet o ArrayList

  1. insertándose Evitar duplicado artículo.
  2. Cuando repito la clase de recopilación, el elemento devuelto es igual que el orden de inserción.

¿Puedo saber qué cosa debería considerar, elegir ArrayList (realizar explícitamente contiene verificación antes de la inserción) o LinkedHashSet?

Gracias.

Respuesta

18

Definitivamente use LinkedHashSet. Está hecho para lo que necesitas. La búsqueda de ArrayList completa cada vez que necesite insertar algo será un factor determinante del rendimiento (O (n) cada vez))

+0

Por supuesto el rendimiento dependerá de los tamaños, la frecuencia de las operaciones, el uso de la memoria, etc. –

4

Use LinkedHashSet si no desea que se inserten elementos duplicados.

+0

Y también preserva el orden de inserción http://download.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html – crowne

2

A LinkedHashSet parece encajar a la perfección.

Cuando construyes tus propios objetos, y planeas usarlos en una Colección como LinkedHashSet aquí. No olvide sobrescribir equals y hashcode para el artículo que va a almacenar en él.

2

Por favor, mira esto: http://wiki3.cosc.canterbury.ac.nz/images/e/e9/JavaCollections.png

LinkedHashSet es lo que necesita, porque es una implementación de la interfaz de Conjunto. Set tiene un hábito muy genial: no permite duplicados por defecto. Entonces, hemos terminado con su 1.

¿Qué tal 2? Sabemos que necesitamos una implementación de Set, pero ¿cuál?

HashMap - puede almacenar pares K, V, pero no hay pedido.

TreeSet - esta es la solución más lenta, porque está utilizando un método compareTo para mantener cada elemento ordenado y ordenado. Es por eso que puede pasarle un comparador cuando está construyendo un TreeSet.

LinkedHashSet - Devuelve los elementos por orden de INSERTARlos. Es la versión ordenada de un HashSet.

Por favor, encontrar una descripción fría aquí: http://java67.blogspot.co.uk/2014/01/when-to-use-linkedhashset-vs-treeset-vs-hashset-java.html?_sm_au_=iVVMtMLHSDQ5P0P7

Cuestiones relacionadas