ArrayList中的Java null元素

use*_*796 3 java arraylist

我只是有一个谷歌无法解决的简单问题.因此,如果我将一些元素ArrayList设置为null,它们是否仍会被计入list.size(),其余元素的索引是否仍然保持不变?

如果没有,你们任何人都可以建议我怎么做吗?

nik*_*kis 6

是的,看一下add()方法实现,例如:

public boolean add(E object) {
    Object[] a = array;
    int s = size;
    if (s == a.length) {
        Object[] newArray = new Object[s +
                (s < (MIN_CAPACITY_INCREMENT / 2) ?
                 MIN_CAPACITY_INCREMENT : s >> 1)];
        System.arraycopy(a, 0, newArray, 0, s);
        array = a = newArray;
    }
    a[s] = object;
    size = s + 1;
    modCount++;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

因为ArrayList.size()只返回size变量的值,很明显,如果你添加null,大小将增加1,所以,是的,null计算.


MrM*_*ins 2

您可以从列表中删除所有元素

MyList.removeAll(Collections.singleton(null));
MyList.size();
Run Code Online (Sandbox Code Playgroud)

参考:http://www.mhaller.de/archives/12-How-to-remove-all-null-elements-from-a-Collection.html