gpt4 book ai didi

java - 如何在不循环的情况下检查列表是否至少有一个元素

转载 作者:行者123 更新时间:2023-11-29 09:37:50 25 4
gpt4 key购买 nike

我的问题很明确。

我有一个列表,我想确保它至少有一个非空元素。而且,没有循环(性能测量)。

list.size()

在这里绝对没有帮助。因为如果列表包含 5 个空值,那么它的大小也将为 5。

请注意,我并不是要一个不能包含 null 的列表。

最佳答案

使用标准 List 无法做到这一点没有循环的实现,无论是显式还是隐式1List 不支持此功能API,并且没有任何标准列表类作为专门操作包含在内。

避免循环的唯一方法是创建自定义 List处理 null 的实现作为特殊,并记录 null 的数量列表中的元素。这种方法的缺点是列表上的更新操作更昂贵,因为它们需要测试以查看是否需要更改计数器。

请注意,使用手动编码的循环通常不会那么昂贵,因为您可以在看到非空元素后立即停止循环。


1 - 如果您关心效率,那么在某些方法中使用隐式循环,例如 Collections.frequency可能比专门为此目的手动编码的循环要昂贵得多。


跟进

I'm not creating or filling the list. I got the already generated list from some code that I cannot alter.

在那种情况下,像下面这样的循环是最快的可能解决方案:

boolean empty = true;
for (SomeType t : list) {
if (t != null) {
empty = false;
break;
}
}

如果列表是 ArrayList,索引可能会稍微快一些, 但不适用于 LinkedList .

关于java - 如何在不循环的情况下检查列表是否至少有一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com