2010-04-01 6 views
4
String a []= {null,null,null,null,null}; 

//add array to arraylist 
ArrayList<Object> choice = new ArrayList<Object>(Arrays.asList(a)); 

System.out.println(choice.size()); 

Pourquoi la taille du arrayList choice est 5 lorsque tous les éléments ont été mis à nullComment définir la taille arrayList comme nulle?

+0

Merci pour cette demande :) – RubyDubee

Répondre

2

Ils peuvent être nuls, mais ils sont toujours présents dans la liste.

Vous pouvez vider le ArrayList, en appelant choice.clear();

4

Je pense que ce qui vous déroutant est que vous pensez de la ArrayList comme ArrayList d'objets, et non une ArrayList de références aux objets.

Une ArrayList d'Object représente une liste accessible par index de références aux objets.

Il est valable qu'une telle référence ne se réfère pas à un objet réel mais soit "nulle". Par conséquent, vous avez cinq "emplacements" de référence, chacun avec une valeur de null.

Ce n'est pas la même chose qu'une série de quatre null, ou zéro nul. Regardez votre tableau initial et primitif de chaînes - sa longueur est cinq, et non zéro.

Ou encore plus simple, quand vous avez une classe avec un champ de type Object, cela prend encore de la place, qu'elle soit en fait quelque chose ou qu'elle soit nulle. Sinon, vous ne seriez pas en mesure d'instancier la classe et de ne pas devoir la réaffecter lorsque vous avez réellement attribué quelque chose au champ. Parce que l'arraylist a encore 5 éléments dans le tableau de bord

+0

+1 - meilleure réponse ici :) – RubyDubee

1

De l'Javadocs pour ArrayList:

mise en œuvre redimensionnable-ensemble de l'interface de liste . Implémente toutes les opérations de liste facultatives et autorise tous les éléments, y compris null. ArrayLists peut contenir des éléments Null, la taille est donc cinq.

Gardez à l'esprit que si vous déclarez simplement un new ArrayList(5), il aura une capacité initiale de 5, mais le size() sera 0.

1

Ceci est dû au fait que ArrayList n'est pas nul, il contient cinq objets (tous sont null), De toute façon, une ArrayList n'aura jamais une taille nulle, au moins la taille est 0 (zéro), et si la ArrayList n'est pas initialisée (est null) et que vous essayez d'accéder à la fonction size, elle lancera une NullPointerException. J'espère que cette information sera utile pour vous, et désolé pour mon mauvais anglais :(

Questions connexes