TreeSet去重问题,这种情况为何无法去重?
1,这种情况是compare方法里面用equals比较,无法去重,控制台比较次数为6,应该是少了一次“规模指标”比“规模指标”的,不知道为啥。
2,这种compare方法里面用了compareTo可以去重,但是只比较了4次。
3,求大佬指出为何一种可以另一种不可以呢?为什么一个是6次一个是4次呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为你的Comparator实现的不对,TreeSet是使用TreeMap来判断重复的,你这里只要不相等就返回一个比0大的数,意味着你在告诉程序:规模指标<效益指标<资产质量指标<规模指标。所以就不会去重的,判断次数不一样也是这个原因,可以去了解下红黑树
因为你的Comparator实现的不对,TreeSet是使用TreeMap来判断重复的,你这里只要不相等就返回一个比0大的数,意味着你在告诉程序:规模指标<效益指标<资产质量指标<规模指标。所以就不会去重的,判断次数不一样也是这个原因,可以去了解下红黑树。
附上TreeMap里面比较节点是否相等的代码:
举个例子:
假如你写入的数据分别是:A、B、C、A