TreeSet集合排序有关问题
TreeSet集合排序问题需求是数组去重,但是要保留原来的顺序,例如:原始数组是{4,2,4,6,1,2,4,7,8}得到结果{4
TreeSet集合排序问题
需求是数组去重,但是要保留原来的顺序,例如:
原始数组是{4,2,4,6,1,2,4,7,8}
得到结果{4,2,6,1,7,8}
我想用TreeSet集合,然后自定义一个比较器,可是结果却是错误的,代码如下:
旋转后颜色忘记了,不知道有没有弄错,如果不懂红黑树的话得自己去学习一下了
[解决办法]为了这个问题专门去查了一个小时!
TreeSet是用TreeMap实现的,而TreeMap又是用红黑树实现的,红黑树又是一个加了条件的排序树。在你的代码中,comparator只会返回1(或-1),这就是说在插入数据的时候,只会沿着右子树(或左子树)的方向检索,并且在插入的过程中,树自身不断的调整,从而导致新添加的元素A根本没有没有机会去跟与A相等的B进行比较,从而导致了无法去重,如果楼主想彻底搞明白这个问题,请自己去模拟下红黑树的插入过程。
[解决办法]ItEye上我也曾参与讨论过一个类似的问题
treeSet 一个很诡异的重复性判断问题
虽然不大一样,你也可以参考下。