Chr*_*utz 5 java equality java-8 java-stream
我确实有像这里描述的类似问题.但首先我有两个不同之处,我确实使用了流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
Run Code Online (Sandbox Code Playgroud)
我有一个具有相等方法的类,可以ContextBlogEqual使用该方法调用它
public boolean equal(Blog a, Blog b);
Run Code Online (Sandbox Code Playgroud)
有没有办法根据ContextBlogEqual#equal方法使用我当前的流方法删除所有重复的条目?
我认为已经在分组,但这也不起作用,因为为什么blogA和blogB相等的原因不仅仅是一个参数.此外,我不知道如何使用.reduce(..),因为还有一个以上的元素.
本质上,您要么必须定义hashCode以使数据与哈希表一起使用,要么必须定义全序以使其与二叉搜索树一起使用。
对于哈希表,您需要声明一个包装类,它将覆盖equals和hashCode。
对于二叉树,您可以定义一个Comparator<Blog>尊重您的平等定义并添加任意但一致的排序标准的树。然后你就可以收集到一个new TreeSet<Blog>(yourComparator).
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |