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

combien de données peuvent être ajoutées en java.util.Liste en Java au maximum?

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

46
demandé sur Tot Zam 2010-09-22 13:38:14

8 réponses

cela dépend de l'implémentation de List . Puisque vous indexez des tableaux avec int s, un ArrayList ne peut contenir plus de Integer.MAX_VALUE éléments. Un LinkedList n'est pas limité de la même façon, cependant, et peut contenir n'importe quelle quantité d'éléments.

45
répondu gustafc 2010-09-22 09:49:46

cela dépend de la mise en œuvre, 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 elements, renvoie 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 étiqueté) est soutenu par un tableau, et est limité à la taille du tableau-i.e. Integer.MAX_VALUE

20
répondu Bozho 2010-09-22 09:53:43

combien de données peuvent être ajoutées en java.util.Liste en Java au maximum?

C'est très similaire à limite théorique pour le nombre de clés (objets) qui peuvent être stockées dans une HashMap?

la documentation de java.util.List n'indique aucune limite explicite quant au nombre maximum d'éléments. La documentation de List.toArray toutefois, les états qui ...

Retourner un tableau contenant tous des éléments de cette liste dans l'ordre (du premier au dernier élément); aurait des difficultés à mettre en œuvre certaines méthodes loyalement, telles que

... a proprement parler, il ne serait pas possible d'appliquer fidèlement cette méthode si la liste comportait plus de 2 31 -1 = 2147483647 les éléments étant donné que c'est le plus grand tableau.

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 elements, 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 .

y a-t-il une taille par défaut dans 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 à réattribuer la mémoire) est 10. Voir la documentation du default constructor .

le la limite de taille de ArrayList est Integer.MAX_VALUE puisqu'il est soutenu par un tableau ordinaire.

10
répondu aioobe 2017-05-23 10:31:14

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 la liste que vous choisissez d'utiliser.

généralement, une implémentation de liste peut contenir n'importe quel nombre d'éléments (si vous utilisez une liste indexée, elle peut être limitée à Integer.MAX_VALUE ou Long.MAX_VALUE ). Tant que tu ne manques pas de mémoire, la liste ne devient pas "pleine" ou quoi que ce soit.

9
répondu Gerco Dries 2010-09-22 09:40:34

autant Que votre mémoire disponible. Il n'y a pas de limite de taille, sauf pour le tas.

5
répondu duffymo 2010-09-22 09:40:25

l'interface définit cependant la méthode size (), qui renvoie 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 que vous atteignez entier.MAX_VALUE, le comportement de la liste change un peu

ArrayList (qui est étiqueté) est soutenu par un tableau, et est limité à la taille du tableau - c.-à-d. entier.MAX_VALUE

2
répondu user3193782 2014-01-23 11:20:16

voir le code ci-dessous de arraylist default il est 10 quand u créer 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
répondu Dead Programmer 2010-09-22 11:28:12

numérotant un élément dans le tableau java devrait commencer à zéro. Ce fut, je pense que nous pouvons avoir accès à l'Entier.MAX_VALUE+1 an items.

0
répondu Oleksy Ostanin 2015-07-16 09:27:37