webentwicklung-frage-antwort-db.com.de

Wie viele Daten kann eine Liste maximal enthalten?

Wie viele Daten können in Java.util.List maximal in Java) hinzugefügt werden?

Gibt es eine Standardgröße für eine ArrayList?

52
Paul

Dies hängt von der Implementierung von List ab. Da Sie Arrays mit ints indizieren, kann ein ArrayList nicht mehr als Integer.MAX_VALUE Elemente. Ein LinkedList ist jedoch nicht in gleicher Weise begrenzt und kann beliebig viele Elemente enthalten.

50
gustafc

Dies hängt von der Implementierung ab, aber das Limit wird nicht von der Schnittstelle List definiert.

Die Schnittstelle definiert jedoch die Methode size(), die ein int zurückgibt.

Gibt die Anzahl der Elemente in dieser Liste zurück. Wenn diese Liste mehr als Integer.MAX_VALUE - Elemente enthält, wird Integer.MAX_VALUE Zurückgegeben.

Also kein Limit, aber nachdem Sie Integer.MAX_VALUE Erreicht haben, ändert sich das Verhalten der Liste ein bisschen

ArrayList (das markiert ist) wird von einem Array gesichert und ist auf die Größe des Arrays beschränkt - d. h. Integer.MAX_VALUE

22
Bozho

Wie viele Daten können maximal in Java.util.List in Java) hinzugefügt werden?

Dies ist sehr ähnlich zu Theoretisches Limit für die Anzahl der Schlüssel (Objekte), die in einer HashMap gespeichert werden können?

Die Dokumentation von Java.util.List Dokumentiert keine explizite Beschränkung der maximalen Anzahl von Elementen. Die Dokumentation von List.toArray besagt jedoch, dass ...

Gibt ein Array zurück, das alle Elemente in dieser Liste in der richtigen Reihenfolge enthält (vom ersten bis zum letzten Element). Probleme haben, bestimmte Methoden genau zu implementieren, wie z

... streng genommen wäre es nicht möglich, diese Methode originalgetreu umzusetzen, wenn die Liste mehr als 2 hätte31-1 = 2147483647 Elemente, da dies das größtmögliche Array ist.

Einige werden argumentieren, dass die Dokumentation von size()...

Gibt die Anzahl der Elemente in dieser Liste zurück. Wenn diese Liste mehr als Integer.MAX_VALUE - Elemente enthält, wird Integer.MAX_VALUE Zurückgegeben.

... gibt an, dass es keine Obergrenze gibt, diese Sicht führt jedoch zu zahlreichen Inkonsistenzen. Siehe dieser Fehlerbericht .

Gibt es eine Standardgröße für eine Array-Liste?

Wenn Sie sich auf ArrayList beziehen, würde ich sagen, dass die Standardgröße 0 ist. Die Standardkapazität jedoch (die Anzahl der Elemente, ohne die Sie einfügen können) die Liste zu zwingen, Speicher neu zuzuweisen) ist 10. Siehe die Dokumentation des Standardkonstruktors .

Die Größenbeschränkung von ArrayList ist Integer.MAX_VALUE, Da es von einem normalen Array unterstützt wird.

12
aioobe

Java.util.List Ist eine Schnittstelle. Wie viele Daten eine Liste enthalten kann, hängt von der spezifischen Implementierung der von Ihnen ausgewählten Liste ab.

Im Allgemeinen kann eine List-Implementierung eine beliebige Anzahl von Elementen enthalten (Wenn Sie eine indizierte Liste verwenden, ist diese möglicherweise auf Integer.MAX_VALUE Oder Long.MAX_VALUE Beschränkt). Solange Ihnen nicht der Speicher ausgeht, wird die Liste nicht "voll" oder so.

9
Gerco Dries

So viel wie Ihr verfügbarer Speicherplatz zulässt. Es gibt keine Größenbeschränkung außer für den Haufen.

5
duffymo

Die Schnittstelle definiert jedoch die size () -Methode, die ein int zurückgibt.

Returns the number of elements in this list. If this list contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.

Keine Beschränkung, aber nachdem Sie Integer.MAX_VALUE erreicht haben, ändert sich das Verhalten der Liste ein wenig

ArrayList (die mit Tags versehen ist) wird von einem Array unterstützt und ist auf die Größe des Arrays beschränkt - d. H. Integer.MAX_VALUE

2
Mohammad

Die Nummerierung eines Elements im Array Java sollte bei Null beginnen. Ich glaube, wir können auf Integer.MAX_VALUE + 1 und Elemente zugreifen.

0
Oleksy Ostanin

siehe den folgenden Code von arraylist default ist es 10, wenn u create List l = new ArrayList ();

   public class ArrayList<E> extends AbstractList<E> implements List<E>,
           Cloneable, Serializable, RandomAccess {

          private static final long serialVersionUID = 8683452581122892189L;

          private transient int firstIndex;

          private transient int lastIndex;

          private transient E[] array;

          /**
           * Constructs a new instance of {@code ArrayList} with ten capacity.
           */
          public ArrayList() {
              this(10);
          }
0
Dead Programmer