gpt4 book ai didi

java - 列表上的 allMatch、anyMatch,无需创建流

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:12 32 4
gpt4 key购买 nike

令我困扰的是(出于性能原因),如果不先创建流,我就无法在列表上调用 allMatch、anyMatch。所以我开始创建这样的实用方法:

public static <T> boolean anyMatch(List<T> list, Predicate<T> predicate) {
for (T element : list) {
if (predicate.test(element)) {
return true;
}
}
return false;
}

有没有更简单的方法?

编辑我不仅仅担心单个对象的成本。如果您查看 Stream.anyMatch 的源代码,您会发现发生了很多事情,而在这个简单的情况下,这些事情是不必要的。

最佳答案

你的新方法似乎是个好主意。虽然如果你使用 Decorator Pattern 会更好而不是仅仅为了维护良好的面向对象设计而使用实用方法。

public class StreamList<T> {
List<T> list;
public StreamList(List list) {
this.list = list;
}
public boolean anyMatch(Predicate<T> predicate) {
for (T element : list) {
if (predicate.test(element)) {
return true;
}
}
return false;
}
}

关于java - 列表上的 allMatch、anyMatch,无需创建流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43564368/

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