java - java - 如何在java removeIf中流式传输已删除的项目?
问题描述
如果名称或代码为空,我将removeIf
用于从列表中删除某些对象:
tables.removeIf(t -> ((t.getName() == null) || (t.getCode() == null)));
有没有办法让我t
在这里获得已删除的实际项目?也许是已删除项目的列表,或者更好的是,已删除项目的流?
谢谢
解决方案
您可以按您的标准进行分区,然后将结果用于您想要的任何内容:
Map<Boolean, List<MyClass>> split = tables.stream()
.collect(Collectors.partitioningBy(t ->
t.getName() == null || t.getCode() == null));
List<MyClass> cleanList = split.get(Boolean.FALSE);
List<MyClass> removedList = split.get(Boolean.TRUE);
cleanList
包含tables
之后会包含的内容removeIf
,以及removedList
被丢弃的数据(您正在寻找的那个)
推荐阅读
- android - 尝试在 vscode 上通过颤振运行应用程序时出现此错误
- android - 如何从 Android 的 FragmentActivity 中的 MainActivity 获取实际的 ViewModel 变量值?
- spring-boot - 无法访问基于远程 docker 的 Spring Boot API
- javascript - 即使将路径添加到 cwd,终端也不会在 vscode 中启动
- android - 在 Jetpack Compose 中更改 android:windowBackground
- javascript - 如何在 reactjs 中将项目附加到 js 中的列表中
- dafny - 如何在 Dafny 3.1.0 中完成 let-such-that 表达式?
- javascript - 控制用户对数组数量的输入
- java - Java 进程使用的内存比 VisualVM 显示的多
- javascript - Mongodb 聚合 $size 不返回结果?