gpt4 book ai didi

java - 如何根据条件使用 Java 8 流删除重复项

转载 作者:行者123 更新时间:2023-12-01 17:44:47 26 4
gpt4 key购买 nike

我有一个List对象,我想根据条件删除重复项:比较 descr值,如果至少有一个 rowInvaliddescr的值,使用该对象并删除具有相同 row 的其余对象值。

class Sample {
public String row;
public String descr;
}

示例输入数据:

[{"01", "Invalid"}, {"01", "One more"}, {"02", "Invalid"}, {"03", "another test"}]

结果应该是:

[{"01", "Invalid"}, {"02", "Invalid"}, {"03", "another test"}]

最佳答案

设置

一个Set在Java中是一个没有重复对象的集合。

这个想法是:

  • Set中存储desc等于“Invalid”的对象的row值。
  • 在初始列表上应用 removeIf() 来删除 Set 中包含行值但 descr 不等于 “无效”

如:

List<Foo> foos = ...;

Set<String> invalidRows =
foos.stream()
.filter(f->f.getDescr().equals("Invalid"))
.map(Foo::getRow)
.collect(toSet());

foos.removeIf(f-> invalidRows.contains(f.getRow()) && !f.getDescr().equals("Invalid"))

关于java - 如何根据条件使用 Java 8 流删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56841622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com