我认为必须有更好的方法来做到这一点。我调用了一个返回 ArrayList 的函数。如果该 ArrayList 仅返回 10 个空项(默认值),是否有办法检查这一点而无需遍历所有 10 个项以查看它们是否为空?
问问题
20371 次
7 回答
8
一般来说,没有;没有其他方法可以告诉任意 ArrayList 包含十个null
than 实例来循环遍历它并确保每个元素都是null
. 当然,如果列表的 size() 不等于 10,您可以放弃这一点。
于 2013-01-04T18:14:40.313 回答
3
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
那是你想要的吗?
多次添加空值会将大小增加一,但除非循环数组列表,否则没有具体的“简单方法”来查找空对象的数量。
于 2013-01-04T18:14:59.457 回答
2
您是否要检查 ArrayList 是否为空?(即myArrayList.isEmpty()
)或者您是否尝试检查 ArrayList 是否仅包含空引用?如果您尝试检查所有条目是否为空,那么您将需要检查每个条目...
boolean isListOfNulls(List myList){
for(Object o: myList)
if(!(o == null))
return false;
return true;
}
于 2013-01-04T18:14:29.903 回答
1
尝试使用流 API。
boolean haveOnlyNulls = arraylist.stream().noneMatch(object -> object != null);
于 2016-06-29T10:41:55.563 回答
1
检查的最佳方法是使用boolean allMatch(Predicate<? super T> predicate);
此返回此流的所有元素是否与提供的谓词匹配。如果不需要确定结果,则可能不会评估所有元素的谓词。如果流为空,则返回 true 并且不评估谓词。
boolean hasAllNulls = list.stream().allMatch(Objects::isNull)
于 2021-08-17T09:31:17.087 回答
0
将默认值更改为空 ArrayList 并使用 isEmpty()。目前的默认设置是毫无意义的。
于 2013-01-04T21:38:30.093 回答