由于性能原因,我不能在没有首先创建流的情况下在列表上调用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的来源,你可以看到很多事情发生在这个简单的情况下是不必要的。
答案 0 :(得分:0)
你的新方法似乎是个好主意。虽然使用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;
}
}