gpt4 book ai didi

java - 如何基于自己的 Equal 类消除流中的重复条目

转载 作者:搜寻专家 更新时间:2023-10-31 20:01:12 26 4
gpt4 key购买 nike

我确实有一个与描述的类似的问题 here .但是有两个区别,首先我使用流 api,其次我已经有了 equals()hashCode() 方法。但是在流中,博客的平等性在此上下文中与 Blog 类中定义的不同。

Collection<Blog> elements = x.stream()
... // a lot of filter and map stuff
.peek(p -> sysout(p)) // a stream of Blog
.? // how to remove duplicates - .distinct() doesn't work

我确实有一个具有相等方法的类让我们用方法调用它 ContextBlogEqual

public boolean equal(Blog a, Blog b);

有什么方法可以使用我当前基于 ContextBlogEqual#equal 方法的流方法删除所有重复条目吗?

我已经想到了分组,但这也不起作用,因为blogAblogB 相等的原因不仅仅是一个参数。我也不知道如何使用 .reduce(..),因为实际上剩下的元素不止一个。

最佳答案

本质上,您要么必须定义 hashCode使您的数据与哈希表一起工作,或使它与二叉搜索树一起工作的总顺序。

对于哈希表,您需要声明一个包装类,它将覆盖 equalshashCode .

对于二叉树,你可以定义一个 Comparator<Blog>它尊重您的平等定义并添加了一个任意但一致的排序标准。然后就可以 Collection 成new TreeSet<Blog>(yourComparator)了.

关于java - 如何基于自己的 Equal 类消除流中的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383428/

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