treeset 删除重复数据java_java-TreeSet比较器在某些情况下无法删除重复...

本文探讨了如何使用Java TreeSet结合比较器删除重复数据并按特定顺序排序。通过覆盖Obj类的equals和hashCode方法,可以使用Stream API进行去重。同时,创建一个排序比较器可以实现按值和ID的排序。然而,一个比较器无法同时满足去重和排序两个需求,需要分别处理。
摘要由CSDN通过智能技术生成

您在询问:

如何固定比较器,使其始终根据ID删除重复项,并根据值(升序)然后ID(降序)对有序集进行排序?

您想要比较器

>根据Obj.id删除重复项

>按Obj.alue和Obj.id对集合进行排序

要求1)导致

Function byId = o -> o.id;

Set setById = new TreeSet<>(Comparator.comparing(byId));

要求2)导致

Function byValue = o -> o.value;

Comparator sortingComparator = Comparator.comparing(byValue).thenComparing(Comparator.comparing(byId).reversed());

Set setByValueAndId = new TreeSet<>(sortingComparator);

让我们看一下TreeSet的JavaDoc.它说:

Note that the ordering maintained by a set […] must be consistent with equals if it is to

correctly implement the Set interface. This is so

because the Set interface is defined in terms of the equals operation,

but a TreeSet instance performs all element comparisons using its

compareTo (or compare) method, so two ele

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值