2010-04-01 195 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()); 

为什么ArrayList中choice的大小为5时,所有的元素都被设置为null如何将arrayList的大小设置为null?

+0

谢谢你问这个:) – RubyDubee 2010-04-01 07:01:19

回答

2

因为数组列表中仍然有5个元素。它们可能为空,但它们仍然存在于列表中。

您可以清空ArrayList中,通过调用choice.clear();

4

我认为,是混淆你的是,你所想的ArrayList为对象的ArrayList,而不是一个对象引用的ArrayList。

Object的ArrayList表示对象的索引可访问列表引用

对于这样的引用来说,不是指真实对象而是“空”,这是有效的。

因此,您有五个参考“插槽”,每个插槽的值为null。

这与一系列的四个零值或零零点不一样。

看看你的初始和基本字符串数组 - 它的长度是五,而不是零。

甚至更​​简单,当你有一个Object类型的字段的类时,它仍然占用空间,不管它实际上是指什么或者是null。否则,您将无法实例化该类,并且在您将实际内容分配给该字段时不需要重新分配该类。

+0

+1 - 最佳答案在这里:) – RubyDubee 2010-04-01 07:01:47

1

从Javadoc文档的ArrayList:

的 List接口的大小可变数组的实现。实现所有 可选列表操作,并允许 所有元素,包括null。

ArrayLists可以容纳空元素,所以大小为5。请记住,如果你只是声明一个new ArrayList(5),它将有一个初始容量为5,但size()将为0.

1

这是因为ArrayList不是null,它包含五个对象(全为空),无论如何,一个ArrayList永远不会有一个空的大小,至少大小为0(零),如果ArrayList未初始化(为空),并且您尝试访问函数size(),它将抛出一个NullPointerException。我希望这些信息对你有用,对不起我的英文不好:(

相关问题