Sto creando un'applicazione di chat. Corrente Ho tutti i messaggi in un ArrayList
, che mi ha fatto pensare: quanti elementi è il design ArrayList
da tenere? 100? 1.000? 10.000?Quantità di elementi in ArrayList
risposta
ArrayList
non può contenere più di Integer.MAX_VALUE
elementi.
Quindi 2147483647 è il numero max.
ArrayList può contenere un numero qualsiasi di elementi fino a Integer.MAX_VALUE
- questo è dovuto alla decisione di progettazione di utilizzare il tipo di dati int
per gli indici. Tuttavia, ciò che è importante è il modo in cui si sta allocando la memoria per esso: l'allocazione della memoria è lenta e il modo in cui si elaborano/accedono agli elementi. Tuttavia, dal solo aspetto dello storage, sei limitato da MAX_VALUE
. In Java, questo è 2^31-1 = 2.147.483.647.
Per qualsiasi normale applicazione questo dovrebbe essere sufficiente. Tuttavia, se è necessario altro, è possibile ottenere facilmente il codice sorgente e modificarlo per utilizzare long
come tipo di dati di indice e quindi essere limitato da Long.MAX_VALUE
.
Il motivo non è dovuto alla scelta di indici int di per sé. La ragione è dovuta al backing store dell'implementazione List che è stata scelta per la sua complessità algoritmica desiderata (ammortizzata) dell'accesso casuale alla lista (che richiede un comportamento di tipo array). A sua volta questo backing store (un array) viene fornito con questa limitazione in Java/JVM. Tuttavia, si potrebbero implementare le interfacce List per utilizzare anche indici negativi dando all'utente 2^32 possibili indici usando lo stesso tipo di dati per index ('int'), ad esempio usando due array e alcuni oggetti extra come backing store di un array. – user268396
@ user268396 Abbastanza soddisfacente, tuttavia è ancora possibile ottenere il sorgente per 'ArrayList' e modificarlo per aumentare la dimensione massima a qualsiasi cosa si desideri. Ad esempio, utilizza l'oggetto 'Object [] []' e usa 'long' come indice - ora sei limitato da' Integer.MAX_VALUE^2'. –
Ovviamente, ma il mio punto più generale è che nella tua risposta (come detto) il ragionamento manca il legame tra la limitazione dell'implementazione e il comportamento dell'implementazione (complessità delle prestazioni/algoritmo).Se preso al valore nominale, una ragionevole domanda di follow-up sarebbe: perché usare ArrayList? A cosa serve se tutto ciò che può fare è una versione più limitata di 'LinkedList'. A cui la risposta è "complessità/prestazione algoritmica", ma la limitazione non è ovvia né spiegata. :) – user268396
ArrayList, che è supportato da un array ed è limitato alla dimensione dell'array - vale a dire Integer.MAX_VALUE.
Un LinkedList non è limitato allo stesso modo, tuttavia, e può contenere qualsiasi quantità di elementi.
vedere domanda simile max. length of List in Java
How many data a list can hold at the maximum di avere altri aspetti di dimensione massima di lista
vedere http://stackoverflow.com/questions/7632126/maximum-size-of-hashset-vector-linkedlist –
Sì, vedo ...: P Imparato da esso, grazie ...: D –
La dimensione del ArrayList
è Integer.MAX_VALUE
. Non perché, i commenti prima del metodo List#size() del numero List
, la dimensione massima di qualsiasi List
è Integer.MAX_VALUE
simile a soffietto.
/**
* Returns the number of elements in this list. If this list contains
* more than <tt>Integer.MAX_VALUE</tt> elements, returns
* <tt>Integer.MAX_VALUE</tt>.
*
* @return the number of elements in this list
*/
int size();
È, perché ArrayList
usa matrice internamente e teoricamente una matrice può essere di Integer.MAX_VALUE
dimensioni al massimo. Per ulteriori informazioni, è possibile vedere this.
Questo doesn Non rispondere affatto alla domanda. La dimensione di JavaDoc stabilisce solo la limitazione sulla segnalazione delle dimensioni di una lista, si dice * nulla * sulla dimensione massima di una lista. – SimonC
La risposta è completamente fuorviante, il 'size()' JavaDoc non fornisce alcuna indicazione sulla dimensione massima di qualsiasi implementazione di lista. – SimonC
- 1. Contare le occorrenze di elementi in ArrayList
- 2. Java ArrayList Scegli N elementi
- 3. Spostamento di elementi in giro in un ArrayList
- 4. Come verificare se gli elementi di un ArrayList sono tutti contenuti in un altro ArrayList
- 5. ArrayList che aggiunge automaticamente elementi null
- 6. Somma tutti gli elementi java arraylist
- 7. Creazione di un array di elementi ArrayList <String>
- 8. High Runtime per Dictionary.Add per una grande quantità di elementi
- 9. Aggiungere più elementi a un arraylist già inizializzato in java
- 10. jQuery: margine css basato sulla quantità di elementi nel contenitore?
- 11. query SQL moltiplicando risultato SUM per quantità di elementi interni
- 12. aggiungendo una grande quantità di elementi al DOM
- 13. Come posso verificare se un ArrayList contiene elementi di un altro ArrayList?
- 14. non può rimuovere gli elementi duplicati da arraylist di hashmap
- 15. Come aggiungere elementi generici a un ArrayList generico?
- 16. Conversione di HashMap in ArrayList
- 17. Come rimuovere elementi sequenziali da un ArrayList Java?
- 18. ArrayList contiene un altro ArrayList
- 19. make ArrayList Read only
- 20. ArrayList Srotolare
- 21. cerca in java ArrayList
- 22. Arraylist in oggetto parcellizzabile
- 23. Ottieni valore (stringa) di ArrayList <ArrayList <String>>(); in Java
- 24. Java: filtro ArrayList efficiente?
- 25. Conversione di ArrayList in array in java
- 26. Come memorizzare gli elementi selezionati di un ExpandableListView in un ArrayList
- 27. Come modificare gli elementi di ArrayList in It's duplicate senza influenzare quello originale?
- 28. Java Swing Visualizzazione di grandi quantità di dati da ArrayLists
- 29. Java converte ArrayList in stringa e torna a ArrayList?
- 30. Prestazioni di ArrayList
Attenzione ai problemi di threading. – SLaks
Forse questo aiuta: http://www.coderanch.com/t/524745/java/java/Maximum-capacity-arrayList-String-objects –
@MarounMaroun non tutti hanno abbastanza rep per chiudere. – CPerkins