muchas gracias!
(5411) 4637-8879 | 15-4419-JAVA (5282)
email: pab...@pablosz.com.ar
skype: pabloszn
http://www.PabloSZ.com.ar
http://www.JavaSOS.com.ar
Para empezar, tenemos la interfaces Collection y List.
La segunda extiende a la primera.
Java provee varias listas: ArrayList, LinkedList,
Vector, y algunas más.
Dependiendo del uso que tengas, tendrás que usar una u
otra. La idea es la siguiente, si bien no debería
interesarnos la implementación interna de cada una de
esas listas, es necesario para saber cuál usar.
ArrayList es una lista hecha sobre un array creciente.
Cuando se agrega un elemento, todos los posteriores
son movidos una posición ( se usa System.copyArray()
).
LinkedList es una lista enlazada, con todo lo que eso
implica.
Vector no sé cómo se implementa, pero sé que está
sincronizada. Si realmente no necesitás sincronizar tu
lista, no recomiendo que la uses.
Yo hice algunas pruebas y llegué a la siguiente
conclusión:
- Si la mayoría de los nuevos elementos van a ser
insertados al final, te conviene ArrayList. La
inserción es rápida y como insertás al final, no hace
falta mover nada.
- Si la mayoría de los nuevos elementos van a ser
insertados en la posición 0, te conviene LinkedList.
El costo principal que tenés es la instanciación del
nuevo nodo. Pero ArrayList tendría que mover todos los
elementos una posición. (LinkedList guarda una
referencia al primer y último nodo).
- Si la inserción es en posiciones aleatorias,
conviene ArrayList.
Si la performance es crucial para tu aplicación,
tendrías que ver qué otros usos le vas a dar a la
lista (get(), remove(), etc) y analizar cada caso en
particular. Por ejemplo, para hacer get() en
posiciones aleatorias, probablemente te convenga usar
TreeList (no viene en java.lang, sino en Commons
Collections de Jakarta Apache), etc.
También tenés sets, HashSet, TreeSet, etc. Los sets no
soportan elementos repetidos. Es útil en algunos
casos. El HashSet, como usa hashing, es rápida a la
hora de buscar elementos...
Espero haberte sido de ayuda.
Salu2!
MatyX.
__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas