如何在java removeIf中流式传输已删除的项目?

Jac*_*ost 5 java java-8

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

tables.removeIf(t -> ((t.getName() == null) || (t.getCode() == null)));
Run Code Online (Sandbox Code Playgroud)

有什么方法可以获取t此处已删除的实际项目吗?也许是已删除项目的列表,或者更好的是,已删除项目的流?

谢谢

ern*_*t_k 6

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

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);
Run Code Online (Sandbox Code Playgroud)

cleanList包含tables之后包含的内容removeIf,以及removedList被丢弃的数据(您正在寻找的数据)

  • 谢谢@YCF_L - 但我认为你的帖子不需要删除。 (3认同)
  • 比我快 2 分钟;) (2认同)