- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
令我困扰的是(出于性能原因),如果不先创建流,我就无法在列表上调用 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/
我有几个 predicates我都想得到满足。 能满足那些谓词的东西是少数字符串。单个字符串不必满足所有(或任何)这些谓词,但在我查看最后一个字符串后,所有谓词都必须满足。 我用 Java 表示这个问
在 allmatch 的情况下,我想找出哪个元素使谓词失败。 List numbers = Arrays.asList(1, 2, 3, 4, 5); boolean isEven = numbers
令我困扰的是(出于性能原因),如果不先创建流,我就无法在列表上调用 allMatch、anyMatch。所以我开始创建这样的实用方法: public static boolean anyMatch(
我想对 Java 流使用一条语句。 我想过滤所有要求为“true”的 Servicework 对象,然后检查所有 Servicework 对象的状态是否为“完成”。 但是如果 serviceworkL
我有以下流代码: List results = items.stream() .map(item -> requestDataForItem(item)) .filter(data ->
我有 X509 证书。我正在尝试从中提取所有 SAN。之后,我想确保 SAN 的类型为 dNSName - 即列表中的第一个条目应该是值为 2 的整数。引用- https://docs.oracle.
我想要以下逻辑:(我知道它不起作用,因为它不止一次消耗流)。但我不确定如何实现它。 Stream buffers = super.getBuffers().stream(); if (buffers.
int testValue; boolean success = false; while(success == false) { testValue = generateRandomInt();
我的同事和我遇到了一个错误,这是由于我们假设调用 allMatch() 的空流将返回 false。 if (myItems.allMatch(i -> i.isValid()) { //do
我想使用以 allMatch 终端操作结束的单个流链获得一个 false 值。 但是,我发现由于allMatch操作的设计,它在处理空流时会返回true。 例如,以下代码返回 true,因为过滤后的流
这个问题已经有答案了: Why does Stream.allMatch() return true for an empty stream? (6 个回答) 已关闭 4 年前。 每Java SE 8
我在另一篇文章中读到,经过调查发现 anyMatch 终端操作的工作方式是每个线程(在子流上操作)定期检查其他线程是否已找到结果,如果是,则所有其他线程都是停止了。 我假设,但想知道是否有人可以验证
考虑这个片段 - String a = "hello" , b = null, c = "guru"; boolean value = Stream .of(a, b, b.substrin
我是一名优秀的程序员,十分优秀!