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());
当所有元素都设置为choice
时,为什么arrayList null
的大小为5
答案 0 :(得分:4)
我认为令你困惑的是你将ArrayList视为对象的ArrayList,而不是对象引用的ArrayList。
Object的ObjectList表示对象的引用的索引可访问列表。
对于这样的引用有效,不引用实际对象,而是“null”。
因此,您有五个引用“槽”,每个槽的值为null。
这与一系列四个空值或零空值不同。
查看您的初始和原始字符串数组 - 其长度为5,而不是零。
甚至更简单,当你有一个类型为Object的字段的类时,它仍然需要空间,无论它实际上是指某个东西还是null。否则,您将无法实例化该类,并且在您实际为该字段分配内容时无需重新分配该类。
答案 1 :(得分:2)
因为arraylist中仍然有5个元素。它们可能为空,但它们仍然存在于列表中。
您可以通过调用choice.clear();
答案 2 :(得分:1)
来自ArrayList的Javadocs:
可调整大小的数组实现 列表界面。实现所有 可选列表操作和许可 所有元素,包括null。
ArrayLists可以包含null元素,因此大小为5。请注意,如果您只是声明new ArrayList(5)
,则初始容量为5,但size()
为0。
答案 3 :(得分:1)
这是因为ArrayList不为null,它包含五个对象(全部为null),无论如何,ArrayList永远不会有空大小,至少大小为0(零),并且如果未初始化ArrayList(是null)并且您尝试访问函数size()它将抛出NullPointerException。我希望这些信息对你有用,对不起我的英语不好:(