Ich baue eine Chat-Anwendung. Current Ich habe alle Nachrichten in einer ArrayList
, die mich denken - Wie viele Elemente sind die ArrayList
Design zu halten? 100? 1.000? 10.000?Anzahl der Elemente in ArrayList
Antwort
ArrayList
kann nicht mehr als Integer.MAX_VALUE
Elemente enthalten.
Also 2147483647 ist die max.
Arraylist kann eine beliebige Anzahl von Elementen bis zu Integer.MAX_VALUE
halten - dies zu einer Design-Entscheidung beruht int
Datentyp für Indizes zu verwenden. Was jedoch wichtig ist, ist, wie Sie Speicher dafür reservieren - die Speicherzuweisung ist langsam - und wie Sie Elemente bearbeiten/darauf zugreifen. Allein durch den Speicheraspekt sind Sie jedoch auf MAX_VALUE
beschränkt. In Java ist dies 2^31-1 = 2.147.483.647.
Für jede normale Anwendung sollte dies ausreichen. Wenn Sie jedoch mehr benötigen, können Sie den Quellcode dafür leicht abrufen und ihn so ändern, dass er long
als Index-Datentyp verwendet - und dann durch Long.MAX_VALUE
begrenzt wird.
Der Grund liegt nicht an der Auswahl der int-Indizes per se. Der Grund dafür ist der Hintergrundspeicher der List-Implementierung, der aufgrund seiner gewünschten (amortisierten) algorithmischen Komplexität des wahlfreien Zugriffs auf die Liste ausgewählt wurde (was array-ähnliches Verhalten erfordert). Dieser Backing Store (ein Array) enthält diese Einschränkung in Java/JVM. Man könnte jedoch auch die List-Schnittstellen implementieren, um negative Indizes zu verwenden und dem Benutzer 2^32 mögliche Indizes zu geben, die den gleichen Datentyp für index ("int") verwenden, beispielsweise indem zwei Arrays und einige zusätzliche Objekte als Backing-Speicher verwendet werden von dem einen Array. – user268396
@ user268396 Gut genug, aber Sie können immer noch die Quelle für die 'ArrayList' bekommen und sie modifizieren, um die maximale Größe zu erhöhen, was immer Sie wollen. Machen Sie die Unterstützung zum Beispiel 'Object [] []' und benutzen Sie 'long' als Index - jetzt werden Sie durch' Integer.MAX_VALUE^2' eingeschränkt. –
Offensichtlich, aber mein allgemeinerer Punkt ist, dass in Ihrer Antwort (wie gesagt) die Argumentation die Verbindung zwischen der Begrenzung der Implementierung und dem Verhalten der Implementierung (Leistung/algorithmische Komplexität) verfehlt.Wenn man sie als bare Münze nimmt, wäre eine vernünftige Frage: Warum überhaupt ArrayList verwenden? Wofür ist es gut, wenn es nur eine eingeschränkte Version von LinkedList sein kann? Auf die Antwort ist "algorithmische Komplexität/Leistung", aber dann ist die Beschränkung nicht offensichtlich oder nicht erklärt. :) – user268396
ArrayList, die von einem Array unterstützt wird und auf die Größe des Arrays beschränkt ist - d. H. Integer.MAX_VALUE.
Eine LinkedList ist nicht auf die gleiche Weise begrenzt und kann eine beliebige Anzahl von Elementen enthalten.
siehe ähnliche Frage max. length of List in Java
How many data a list can hold at the maximum andere Aspekte auf maximale Größe der Liste haben
siehe http://stackoverflow.com/questions/7632126/maximum-size-of-hashset-vector-linkedlist –
Ja, ich sehe ...: P gelernt, danke ...: D –
Die Größe des ArrayList
Integer.MAX_VALUE
ist. Nicht, weil die Kommentare vor der List#size() Methode der List
sagen, die maximale Größe von List
ist Integer.MAX_VALUE
wie unten.
/**
* 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();
Es ist, weil ArrayList
Array verwendet intern und theoretisch Ein Array kann auf maximal Integer.MAX_VALUE
groß sein. Für weitere Informationen sehen Sie this.
Dies doesn beantworte die Frage überhaupt nicht. Die JavaDoc on size gibt nur die Begrenzung für das Reporting einer Listengröße an, sie sagt * nichts * über die maximale Größe einer Liste. – SimonC
Die Antwort ist völlig irreführend, die 'size()' JavaDoc gibt keinen Hinweis auf die maximale Größe einer Listenimplementierung. – SimonC
- 1. Elemente in einer ArrayList
- 2. Anzahl der Elemente in NSMutableArray
- 3. Seq Anzahl der Elemente
- 4. RecyclerView Anzahl der sichtbaren Elemente
- 5. Bestimmte Elemente in ArrayList zählen
- 6. Anzahl der Maximalwerte von ArrayList Java erhalten
- 7. Entfernen eines ArrayList-Elemente
- 8. Zählen Sie die Anzahl der Elemente in meiner Array-Liste
- 9. Anzahl der Elemente in einem Kanal
- 10. Anzahl der Elemente in einem Enum
- 11. Anzahl der Elemente in Redis set
- 12. Count Anzahl der Elemente in einem Array
- 13. Filter nach Anzahl der Elemente in Beziehung
- 14. Maximale Anzahl der Elemente in ThreadPool.QueueUserWorkItem
- 15. Count Anzahl der Elemente in $ resource.query() Objekt
- 16. Anzahl der Elemente in einem JavaScript-Objekt
- 17. Arraylist Elemente im Textfeld drucken
- 18. Java Matrix enthält Arraylist-Elemente
- 19. Wie Elemente Java statische Arraylist
- 20. Split die Elemente in der Arraylist zu zwei weitere Liste
- 21. Summe alle Elemente Java-Arraylist
- 22. ArrayList in der ArrayList in Java
- 23. Anzahl der Elemente im Abfrage-Set ohne Anzahl zählen()
- 24. Wie zähle ich mehrere doppelte Elemente in einer ArrayList?
- 25. PowerPivot: Anzahl der ausgewählten Slicer-Elemente
- 26. Wie Anzahl der Elemente zu finden, die
- 27. Die Anzahl der Elemente im Array zählen
- 28. Ermitteln Sie die Anzahl der abzurufenden Elemente
- 29. Get WordPress Menü Anzahl der Elemente
- 30. Anzahl der Elemente aus einer Datendatei drucken
Vorsicht vor Threading-Problemen. – SLaks
Vielleicht hilft das: http://www.codeanch.com/t/524745/java/java/Maximum-capacity-arrayList-String-objects –
@MarounMaroun nicht jeder hat genug rep zu closevote. – CPerkins