Tengo que crear una lista grande de n elementos (podría ser de hasta 100.000). cada elemento en la lista es un número entero equivalente al índice de la lista. Después de esto, tengo que llamar a Collections.shuffle en esta lista. Mi pregunta es, qué lista de implementación (ya sea colecciones java o colecciones apache) se debe utilizar. Mi intuición es que ArrayList puede usarse aquí. Todos los pensamientos son apreciados. Gracias!Cuál es la mejor implementación de lista para listas grandes en java
Gracias por las entradas. Creo que me estoy apegando a ArrayList. Actualmente estoy usando el constructor ArrayList con el param inicialCapacity y paso el tamaño de la lista. Entonces, si la lista original es 100000, creo esta nueva lista con ArrayList (100000); Por lo tanto, creo que no tengo la creación de una matriz y hacer una lista como, ya que no habrá ningún cambio de tamaño. Además, la mayoría de las listas de colecciones apache como GrowthList & LazyList no implementan RandomAccess. Esto seguramente ralentizaría la mezcla (según los javadocs). FastArrayList implementa RandomAccess pero apache tiene una nota para esta clase que dice "Esta clase no es multiplataforma. Usarla puede causar fallas inesperadas en algunas arquitecturas".
¿Podría explicarnos el objetivo que desea lograr? – rsp
¿Qué haces con la lista después de agregar y barajar? ¿Agregas/borras elementos en el medio? ¿Agregas/borras elementos en los extremos? ¿Accedes a los elementos en el medio en un orden arbitrario, o haces un solo pase de un extremo al otro? Es realmente difícil decidir sin saber qué es lo que vas a hacer con él. Si todo lo que quiere hacer es agregar números en serie y mezclar, yo diría que ArrayList es la respuesta. – MAK
100000 no es tan grande en estos días. Hacerlo de la manera más ingenua con una lista de arreglos requiere menos de 100ms en mi máquina (núcleo único de Intel Core2 T5600 a 1.83GHz). – starblue