Java流-在第一次匹配后删除所有内容

标签 java java-stream

我有一些 DTO 的链接哈希列表,其中包含 name (字符串)和 isActive ( boolean )属性。我需要从头到尾迭代所有成员,并检查 isActive 中是否有任何成员具有错误值。当我找到这个元素时,我需要切断这个元素和列表的其余部分,并只返回这个元素之前的元素。

我想使用java流来解决这个问题。 我尝试通过谓词使用流和过滤元素来检查元素是否处于 Activity 状态,但这与我想要的逻辑不匹配。正如我所说,我需要找到第一个处于 Activity 状态的元素,并将其及其后的所有内容从列表中删除。

如果我们在 LinkedHashSet 中有这个 ElementDto 列表<>

0 - name:test, isActive:true
1 - name:test2, isActive:true
2 - name:inActive, isActive:false
3 - name:activeAfterInactive, isActive:true

预期输出将是包含元素 0,1 的列表

最佳答案

以下内容应该适用于任何有序集合:

elementCollection.stream().takeWhile(el -> el.isActive())...

关于Java流-在第一次匹配后删除所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56769771/

相关文章:

java - Android 无法连接到套接字服务器(java)

java - 如何计算 ArrayList 中多个重复元素的数量?

Java流迭代列表最有效的方法

java - 点燃异常 : Query execution failed ScanQuery

java - jTable中没有显示数据,没有数据出现在jTable中

java - 如何将列表映射的值转换为单个列表

java - 使用 stream().filter() 在 java List 上执行不区分大小写的搜索

java - Java 流中的 Foreach

java - 如何在过滤之后或之前对元素进行排序

java - Ant <javac> 由于 "package javax.servlet does not exist"而失败