首页 > 解决方案 > java - 如何在java removeIf中流式传输已删除的项目?

问题描述

如果名称或代码为空,我将removeIf用于从列表中删除某些对象:

tables.removeIf(t -> ((t.getName() == null) || (t.getCode() == null)));

有没有办法让我t在这里获得已删除的实际项目?也许是已删除项目的列表,或者更好的是,已删除项目的流?

谢谢

标签: javajava-8

解决方案


您可以按您的标准进行分区,然后将结果用于您想要的任何内容:

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被丢弃的数据(您正在寻找的那个)


推荐阅读