我认为必须有更好的方法来做到这一点。 我调用了一个返回ArrayList的函数。 如果那个ArrayList只返回10个空项(默认值),有没有办法检查它而不迭代所有10个项目以查看它们是否为空?
答案 0 :(得分:7)
一般来说,没有;没有其他方法可以告诉任意ArrayList包含10个null
个实例,而不是循环它并确保每个元素都是null
。当然,如果列表的大小()不等于10,你可以放弃这一点。
答案 1 :(得分:7)
从Java 8开始,您可以像这样使用How to make ConstraintLayout work with percentage values?:
boolean nullsOnly = list.stream().noneMatch(Objects::nonNull);
等于:
boolean nullsOnly = list.stream().allMatch(x -> x == null)
在这里,您可以看到测试任何列表与给定Streams匹配的更一般的方法:
list.stream().allMatch(x -> /* Some testing function. */)
答案 2 :(得分:2)
您是否尝试检查ArrayList是否为空? (即myArrayList.isEmpty()
)或者您是否正在尝试检查ArrayList是否仅包含空引用?如果您正在尝试检查所有条目是否为空,那么您需要检查每个条目...
boolean isListOfNulls(List myList){
for(Object o: myList)
if(!(o == null))
return false;
return true;
}
答案 3 :(得分:2)
List<Object> arrayList = new ArrayList<Object>();
arrayList.isEmpty();
// first call returns true
arrayList.add(null);
// second call returns false
Object obj = new Object();
arrayList.add(obj);
arrayList.isEmpty();
// third call returns false
这就是你想要的吗?
多次添加空值会将大小增加一,但是没有一个简单的方法&#34;除非循环数组列表,否则找到空对象的数量。
答案 4 :(得分:0)
将默认值更改为空ArrayList并使用isEmpty()。目前的默认是毫无意义的。
答案 5 :(得分:0)
尝试使用流API。
boolean haveOnlyNulls = arraylist.stream().noneMatch(object -> object != null);