web-dev-qa-db-fra.com

Combien de données une liste peut-elle contenir au maximum?

Combien de données peut-on ajouter dans Java.util.List dans Java au maximum?

Existe-t-il une taille par défaut d'une liste de tableaux?

52
Paul

Cela dépend de l'implémentation de List. Puisque vous indexez des tableaux avec ints, un ArrayList ne peut pas contenir plus de Integer.MAX_VALUE éléments. Un LinkedList n'est cependant pas limité de la même manière et peut contenir n'importe quelle quantité d'éléments.

50
gustafc

Cela dépend de l'implémentation, mais la limite n'est pas définie par l'interface List.

L'interface définit cependant la méthode size(), qui renvoie un int.

Renvoie le nombre d'éléments dans cette liste. Si cette liste contient plus de Integer.MAX_VALUE éléments, renvoie Integer.MAX_VALUE.

Donc, pas de limite, mais après avoir atteint Integer.MAX_VALUE, le comportement de la liste change n pe

ArrayList (qui est balisé) est soutenu par un tableau et est limité à la taille du tableau - c'est-à-dire Integer.MAX_VALUE

22
Bozho

Combien de données peuvent être ajoutées dans Java.util.List dans Java au maximum?

Ceci est très similaire à limite théorique du nombre de clés (objets) pouvant être stockées dans un HashMap?

La documentation de Java.util.List Ne documente explicitement aucune limite sur le nombre maximal d'éléments. La documentation de List.toArray indique cependant que ...

Renvoie un tableau contenant tous les éléments de cette liste dans l'ordre approprié (du premier au dernier élément); aurait du mal à appliquer fidèlement certaines méthodes, telles que

... à proprement parler, il ne serait pas possible d'appliquer fidèlement cette méthode si la liste avait plus de 231-1 = 2147483647 éléments car c'est le plus grand tableau possible.

Certains diront que la documentation de size()...

Renvoie le nombre d'éléments dans cette liste. Si cette liste contient plus de Integer.MAX_VALUE Éléments, renvoie Integer.MAX_VALUE.

... indique qu'il n'y a pas de limite supérieure, mais cette vue conduit à de nombreuses incohérences. Voir ce rapport de bogue .

Existe-t-il une taille par défaut pour une liste de tableaux?

Si vous faites référence à ArrayList alors je dirais que la taille par défaut est 0. La valeur par défaut capacité cependant (le nombre d'éléments que vous pouvez insérer, sans forcer la liste pour réallouer la mémoire) est 10. Voir la documentation du constructeur par défaut .

La limite de taille de ArrayList est Integer.MAX_VALUE Car il est soutenu par un tableau ordinaire.

12
aioobe

Java.util.List est une interface. La quantité de données qu'une liste peut contenir dépend de l'implémentation spécifique de List que vous choisissez d'utiliser.

En règle générale, une implémentation de liste peut contenir un nombre illimité d'éléments (si vous utilisez une liste indexée, elle peut être limitée à Integer.MAX_VALUE ou Long.MAX_VALUE). Tant que vous ne manquez pas de mémoire, la liste ne devient pas "pleine" ou quoi que ce soit.

9
Gerco Dries

Autant que votre mémoire disponible le permettra. Il n'y a pas de limite de taille sauf pour le tas.

5
duffymo

L'interface définit cependant la méthode size (), qui retourne un int.

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

Donc, pas de limite, mais après avoir atteint Integer.MAX_VALUE, le comportement de la liste change un peu

ArrayList (qui est balisé) est soutenu par un tableau et est limité à la taille du tableau - c'est-à-dire Integer.MAX_VALUE

2
Mohammad

Numéroter un élément dans le tableau Java devrait commencer à zéro. Je pense que nous pouvons avoir accès à Integer.MAX_VALUE + 1 an items.

0
Oleksy Ostanin

voir le code ci-dessous de l'arraylist par défaut c'est 10 quand u crée 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