我认为必须有更好的方法来做到这一点。
我调用了一个返回
ArrayList
的函数。
如果
ArrayList
只返回 10 个空项目(默认),是否有一种方法可以检查这一点,而无需迭代所有 10 个项目来查看它们是否为空?
一般来说,不会;除了循环遍历并确保每个元素都是
null
之外,没有其他方法可以判断任意 ArrayList 包含十个 null
实例。当然,如果列表的 size() 不等于 10,您可以放弃这一点。
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
这就是你想要的吗?
多次添加空值会使大小增加一,但是没有一种具体的“简单方法”来查找空对象的数量,除非循环数组列表。
您是否想检查 ArrayList 是否为空? (即
myArrayList.isEmpty()
)或者您是否试图检查 ArrayList 是否仅包含空引用?如果您尝试检查所有条目是否为空,那么您将需要检查每个条目...
boolean isListOfNulls(List myList){
for(Object o: myList)
if(!(o == null))
return false;
return true;
}
尝试使用流 API。
boolean haveOnlyNulls = arraylist.stream().noneMatch(object -> object != null);
最好的检查方法是使用
boolean allMatch(Predicate<? super T> predicate);
这
返回此流的所有元素是否与提供的谓词匹配。如果不需要确定结果,则可能不会评估所有元素上的谓词。如果流为空,则返回 true 并且不评估谓词。
boolean hasAllNulls = list.stream().allMatch(Objects::isNull)
将默认值更改为空 ArrayList 并使用 isEmpty()。目前的默认设置毫无意义。