java类集--排序及重复元素说明

一,本章目标

掌握TreeSet的排序原理

掌握Set接口中重复元素的定义


二,具体内容

TreeSet类的内容是可以排序的,那么现在我任意给出一个类,观察是否能进行排序。

java类集--排序及重复元素说明

一个对象数组想要排序则要依靠Comparable接口完成。那么对于TreeSet一样,如果想排序,对象的类也要实现Comparable接口

java类集--排序及重复元素说明

此时是可以排序的,但是在结果中,重复的元素只有一个。此时依靠的是Comparable接口来完成的,而且还可以发现,赵六并没有加入进来,因为他与李四的年龄是一样的。

此时Comparable接口比较的只是年龄,所以为了保证正确,所有的属性都应该进行比较。

修改ComparableTo方法

java类集--排序及重复元素说明

java类集--排序及重复元素说明

可以发现赵六出来的。

此时去掉的重复元素并不是真正意义上的重复元素的取消。

java类集--排序及重复元素说明

此时重复元素并没有取消。

如果想要取消掉重复的元素,则需要Object类中的两个方法帮助:

hashCode:表示一个唯一的编码,一般通过计算表示

equals:对象的比较操作

修改Person中的代码:

java类集--排序及重复元素说明

java类集--排序及重复元素说明

现在可以发现重复元素没有了。


三,总结

曾经强调过,一个好的类,应该覆写equal,hashCode,toString方法,String类已经覆写完了

Set接口依靠hashCode和equals方法完成重复元素判断

TreeSet接口依靠Comparable接口完成排序操作