即使ArrayList
具有泛型类型参数,我也可以向它添加null
值吗?
例如:
ArrayList<Item> itemList = new ArrayList<Item>();
itemList.add(null);
如果是这样,will
itemsList.size();
返回1还是0?
如果我可以将null
值添加到ArrayList
中,那么我是否可以只遍历包含以下项的索引?
for(Item i : itemList) {
//code here
}
或者,for each循环是否也会遍历列表中的空值?
发布于 2014-11-24 22:32:18
是的,您可以始终使用null
而不是object。只是要小心,因为有些方法可能会抛出错误。
它将是1。
此外,在null
循环中也会考虑到for s,但您可以使用
for (Item i : itemList) {
if (i != null) {
//code here
}
}
发布于 2014-11-24 22:28:02
您可以将空值添加到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
发布于 2018-01-24 21:53:57
你可以创建Util类:
public final class CollectionHelpers {
public static <T> boolean addNullSafe(List<T> list, T element) {
if (list == null || element == null) {
return false;
}
return list.add(element);
}
}
然后使用它:
Element element = getElementFromSomeWhere(someParameter);
List<Element> arrayList = new ArrayList<>();
CollectionHelpers.addNullSafe(list, element);
https://stackoverflow.com/questions/27107072
复制相似问题