pourquoi les tableaux sont initialisés à des valeurs par défaut, mais pas de liste de tableaux en java?

La mise en œuvre de ArrayList utilise Array sous le capot. Cependant, Arrays sont initialisée avec les valeurs par défaut (0 or null) mais ArrayList sont tout simplement vide. pourquoi est-ce?

       int[] arr = new int[10];
       String[] arr1 = new String[11];
       System.out.println(Arrays.toString(arr));
       System.out.println(Arrays.toString(arr1));
      List<Integer> list = new ArrayList<Integer>(10);
      System.out.println(list);

      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
      [null, null, null, null, null, null, null, null, null, null, null]
      []

Cela signifie que chaque fois que je l'utilise, ArrayList, j'ai besoin de remplir des trucs;
J'ai essayé le ci-dessous une partie de mon code et il jetait des NoSuchElementException et puis j'ai réalisé qu'il n'est pas en défaut, où que Arrays ne

if (list.get(i)==null){
         list.add(i,x);
  else:
        list.add(i,list.get(i)+x)

EDIT:

even List<Integer> list = new ArrayList<Integer>(10);
prints [] although I initialized the size;
Concernant votre edit: Vous n'avez pas défini la taille de 10. Vous définissez la capacité à 10. La taille est de 0 jusqu'à ce que vous ajoutez un élément.
Cela signifie que chaque fois que je l'utilise, ArrayList, j'ai besoin de remplir de choses dans ... Oui, vous ne l'utilisez pas si vous n'avez pas "remplir des trucs".
Vous voyez pas d'éléments lors de l'impression de la liste en raison de son toString() méthode utilise size à déterminer combien d'éléments d'impression, pas de la capacité de la matrice. Lorsque vous créez ArrayList avec une capacité initiale 10 sa taille est encore 0 parce que vous n'avez pas ajouter tous les éléments pour le moment, même si le tableau qui stocke vos objets a été initialisé en tant que nouvel Objet[10] ce qui signifie qu'il est rempli avec 10 valeurs null.
P. S. "qualité" que vous avez initialisé la ArrayList avec juste un soupçon, de toute façon. Si vous spécifiez la capacité de 10, vous pouvez toujours ajouter des 11 éléments. Les résultats de votre programme doit être la même quelle que soit la capacité de vous préciser; seule la performance est affectée.

OriginalL'auteur brain storm | 2014-01-29