当前位置: 首页 > 知识库问答 >
问题:

如何根据标准使用Java8流删除重复[重复]

牛越
2023-03-14

我有一个列表对象,我想根据以下条件删除重复的对象:比较descr值,如果至少有一个具有descr的值为无效,则使用该对象并删除具有相同值的其余对象。

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"}]

共有1个答案

罗鸿畴
2023-03-14

Java中的set是没有重复项的对象的集合。

这个想法是:

  • desc等于“无效”的对象的值存储在中。
  • 在初始列表上应用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"))
 类似资料:
  • 问题内容: 我有这张桌子,我想用SELECT来排除标记的行。一般规则是: 如果有两行或更多行,控件名与品牌名与组类型列相等 然后保留组名不是“ Keine Zuordnung”的行。 请给我一点帮助吗?谢谢! 问题答案: 这是一种方法: 它使用窗口函数来获取计数,然后使用a进行逻辑计算。

  • 实际上,我知道如何减少重复的,或者将分配给,但我有一个不同的问题。如何在Java8中使用stream或者可能是来解决以下智能方式的问题? 假设列表中有一个对象

  • 我构建了一个使用BingAPI下载数据集的代码。当我在终端上运行它时,它返回以下错误: 所以我升级了Numpy,但没有用 那么我该怎么做呢?

  • 问题内容: 我有一个带有Year列的表,并且此列不应有重复的值。因此,我最终得到一张仅具有2007年记录的表格。 那么,如何删除具有重复年份值的行呢? 谢谢 问题答案: 我认为您可以尝试使用IGNORE添加唯一索引: MySQL应该以类似以下内容的方式进行响应: 当然,您可以将其留给MySQL来决定删除哪些行。 编辑: 这适用于任意多的列: 查看有关CREATE INDEX的MySQL文档。一个常

  • 问题内容: 我有下表,现在我需要删除具有重复的“ refID”但至少有一行与该引用对应的行,即我需要删除第4行和第5行。请对此提供帮助 问题答案: 这类似于Gordon Linoff的查询,但没有子查询: 这将使用内部联接仅删除其中另一行具有相同的refID但具有较低ID的行。 避免子查询的好处是能够利用索引进行搜索。该查询在refID + ID上使用多列索引时应表现良好。

  • 我有一个包含列和的df。我正在尝试仅为每个用户的值行后的值删除重复项 最终df