我的问题很清楚。
我有一个列表,我想确保它至少有一个不为null的元素。而且这也没有循环(性能测量)。
list.size()
在这里绝对没有帮助。因为如果列表包含5个空值,则其大小也将为5。
请注意,我并不是在要求一个不能包含的列表null
。
没有List
显式或隐式1的标准实现,没有循环就无法做到这一点。List
API不支持此功能,并且没有任何标准列表类作为专门操作包含在内。
避免循环的唯一方法是创建一个自定义List
实现,将其null
视为特殊实现,并保留null
列表中元素数量的计数。这种方法的缺点是列表上的更新操作更加昂贵,因为它们需要测试以查看是否需要更改计数器。
请注意,使用手动编码的循环通常并不昂贵,因为一旦看到非null元素,您就可以停止循环。
1-如果您担心效率,那么某种方法中的隐式循环Collections.frequency
可能比为此目的专门手工编写的循环要昂贵得多。
跟进
我不是在创建或填充列表。我从一些无法更改的代码中获得了已经生成的列表。
在这种情况下,如下所示的循环是最快的解决方案:
boolean empty = true;
for (SomeType t : list) {
if (t != null) {
empty = false;
break;
}
}
如果列表为,则索引编制可能会略快一些ArrayList
,但不能为LinkedList
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句