1,这种情况是compare方法里面用equals比较,无法去重,控制台比较次数为6,应该是少了一次“规模指标”比“规模指标”的,不知道为啥。
2,这种compare方法里面用了compareTo可以去重,但是只比较了4次。
3,求大佬指出为何一种可以另一种不可以呢?为什么一个是6次一个是4次呢?
1,这种情况是compare方法里面用equals比较,无法去重,控制台比较次数为6,应该是少了一次“规模指标”比“规模指标”的,不知道为啥。
2,这种compare方法里面用了compareTo可以去重,但是只比较了4次。
3,求大佬指出为何一种可以另一种不可以呢?为什么一个是6次一个是4次呢?
4 回答1.4k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答741 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
因为你的Comparator实现的不对,TreeSet是使用TreeMap来判断重复的,你这里只要不相等就返回一个比0大的数,意味着你在告诉程序:规模指标<效益指标<资产质量指标<规模指标。所以就不会去重的,判断次数不一样也是这个原因,可以去了解下红黑树
因为你的Comparator实现的不对,TreeSet是使用TreeMap来判断重复的,你这里只要不相等就返回一个比0大的数,意味着你在告诉程序:规模指标<效益指标<资产质量指标<规模指标。所以就不会去重的,判断次数不一样也是这个原因,可以去了解下红黑树。
附上TreeMap里面比较节点是否相等的代码:
举个例子:
假如你写入的数据分别是:A、B、C、A