2010-04-01 27 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。我希望這些信息對你有用,對不起我的英文不好:(

相關問題