我可以将null
值添加到ArrayList
,即使它具有泛型类型参数吗?
例如
ArrayList<Item> itemList = new ArrayList<Item>();
itemList.add(null);
若然,
itemsList.size();
返回1还是0?
如果我可以将null
值添加到ArrayList
,我是否可以只遍历包含此类项目的索引?
for(Item i : itemList) {
//code here
}
或者每个循环是否也循环遍历列表中的空值?
答案 0 :(得分:41)
是的,您始终可以使用null
而不是对象。请小心,因为某些方法可能会抛出错误。
这将是1。
也会在for循环中考虑null
,但你可以使用
for(Item i : itemList) {
if (i!= null) {
//code here
}
}
答案 1 :(得分:24)
您可以向ArrayList
添加空值,并且您必须在循环中检查空值:
for(Item i : itemList) {
if (i != null) {
}
}
itemsList.size();
会考虑null
。
List<Integer> list = new ArrayList<Integer>();
list.add(null);
list.add (5);
System.out.println (list.size());
for (Integer value : list) {
if (value == null)
System.out.println ("null value");
else
System.out.println (value);
}
输出:
2
null value
5
答案 2 :(得分:0)
您可以创建Util类:
public final class CollectionHelpers {
public static <T> boolean addNullSafe(List<T> list, T element) {
if (CollectionUtils.isEmpty(list) || element == null) {
return false;
}
return list.add(element);
}
}
然后使用它:
Element element = getElementFromSomeWhere(someParameter);
List<Element> arrayList = new ArrayList<>();
CollectionHelpers.addNullSafe(list, element);