Devo creare un elenco di n elementi (potrebbe essere fino a 100.000). ogni elemento nella lista è un numero intero equivalente all'indice della lista. Dopo questo devo chiamare Collections.shuffle su questo elenco. La mia domanda è, quale implementazione lista (collezioni java o collezioni apache) dovrebbe essere utilizzata. Il mio istinto è che ArrayList può essere usato qui. Tutti i pensieri sono apprezzati. Grazie!Qual è la migliore implementazione Elenco per elenchi di grandi dimensioni in java
Grazie per gli ingressi. Penso di stare attaccato alla ArrayList. Attualmente sto usando il costruttore ArrayList con il parametro initialCapacity e passo la dimensione della lista. Quindi se l'elenco originale è 100000, creo questo nuovo elenco con il nuovo ArrayList (100000); Quindi penso di non aver creato un array e di fare una lista perché non ci sarà alcun ridimensionamento. Inoltre, la maggior parte delle raccolte di apache Elenca come GrowthList & LazyList non implementa RandomAccess. Questo sicuramente rallenterebbe lo shuffle (come per javadocs). FastArrayList implementa RandomAccess ma apache ha una nota per questa classe che dice "Questa classe non è multipiattaforma.Utilizzarla può causare errori imprevisti su alcune architetture".
Potresti elaborare l'obiettivo che desideri raggiungere? – rsp
Cosa fai con la lista dopo aver aggiunto e mescolato? Aggiungi/elimina elementi al centro? Aggiungi/cancella elementi alle estremità? Accedete agli elementi nel mezzo in un ordine arbitrario o effettuate un singolo passaggio da un estremo all'altro? È davvero difficile decidere senza sapere che cosa ne farai. Se tutto ciò che si vuole fare è aggiungere numeri in serie e mescolare, direi che ArrayList è la risposta. – MAK
100000 non è così grande in questi giorni. Farlo nel modo più ingenuo con un elenco di array richiede meno di 100 ms sulla mia macchina (single core di Intel Core2 T5600 a 1,83 GHz). – starblue