我有ArrayList
,其中包含一些对象以及一些null
元素。
似乎null
没有占用任何空间,返回的数组大小只是该对象占用的数据大小,并没有考虑到' null'元件。
//Inside for loop
private void addPhone(ArrayList<PhoneBean > phoneBeanList,Member member) {
if ("A".equalsIgnoreCase(member.getStatus())) {
PhoneBean phoneBean = new PhoneBean ();
phoneBean .setPhNum("12345");
phoneBeanList.add(phoneBean);
}else {
phoneBeanList.add(null);
}
}
当addPhone()
运行两次时,我希望phoneBeanList
大小返回2,而不是1。
是因为null
对ArrayList
尺寸没有贡献吗?
如果状态不是A
,我还需要知道如何更改/添加到列表中?
答案 0 :(得分:2)
您可以将null添加到ArrayList。因此,要回答您的问题,列表的大小为null,另一个对象为2。
/* package whatever; */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
List<Object> items = new ArrayList<>();
items.add(null);
items.add("test");
System.out.println("Items size: " + items.size());
// Prints 2
}
}
答案 1 :(得分:0)
是因为&#34; null&#34;没有贡献ArrayList Size?
我会说不。这不是因为您添加了null
。
根据ArrayList中.add()
方法的实现,没有明确的条件来处理null
个对象。因此,即使在列表中添加null
,也应该增加数组大小。
事实上,他们唯一要做的就是检查是否需要增加支持数组列表的当前数组。之后,您的null
对象将被添加到列表中。
您可以在ArrayList中查看.add()
的实现:
public boolean add(E e) {
ensureCapacityInternal(size + 1);
elementData[size++] = e;
return true;
}
当addPhone()运行2次成员状态&#34; A&#34;和其他作为&#34; D&#34;我期待phoneBeanList大小返回2,而不是1
来自addPhone()
的方法签名:
private void addPhone(ArrayList<PhoneBean > phoneBeanList,Member member
用户将选择要添加的ArrayList实例。我高度怀疑您向另一个ArrayList实例添加了一个元素,这解释了为什么它将列表大小显示为1。
如果不是这种情况,可能还有其他原因未在您的代码中显示。