2022-12-15
treeset 方法 student ts 集合
TreeSet集合
HashSet集合存储的元素是无序的和不可重复的,为了对集合中的元素进行排序,Set接口提供了另一个可以对HashSet集合中元素进行排序的类——TreeSet。
接下来通过一个案例演示TreeSet集合的用法。
Java |
上述代码中,从打印结果可以看出,添加的元素已经自动排序,并且重复存入的整数1和3只添加了一次。
TreeSet集合之所以可以对添加的元素进行排序,是因为元素的类可以实现Comparable接口 (基本类型的包装类,String类都实现了该接口),Comparable接口强行对实现它的每个类的对象进行整体排序,这种排序被称为类的自然排序。Comparable接口的compareTo()方法被称为自然比较方法。如果将自定义的Student对象存入TreeSet,TreeSet将不会对添加的元素进行排序,Student对象必须实现Comparable接口并重写compareTo()方法实现对象元素的顺序存取。
接下来通过一个案例讲解使用compareTo()方法实现对象元素的顺序存取。
Java |
从运行结果可以看出,TreeSet按照存入元素的顺序倒过来存入了集合中,因为Student类实现了Comparable接口,并重写了compareTo()方法,当compareTo()方法返回0的时候集合中只有一个元素;当compareTo()方法返回正数的时候集合会正常存取;当compareTo()方法返回负数的时候集合会倒序存储。
上面介绍了TreeSet集合的自然排序,它还有另一种实现排序的方式,即实现Comparator接口,重写compare()方法和equals()方法,但是由于所有的类默认继承Object,而Object中有equals()方法,所以自定义比较器类时,不用重写equals()方法,只需要重写compare()方法,这种排序被称为比较器排序。
接下来通过一个案例学习将自定义的Student对象通过比较器的方式存入TreeSet集合。
Java |
上一篇:Set接口简介
下一篇:Map接口与HashMap集合
开班时间:2021-04-12(深圳)
开班盛况开班时间:2021-05-17(北京)
开班盛况开班时间:2021-03-22(杭州)
开班盛况开班时间:2021-04-26(北京)
开班盛况开班时间:2021-05-10(北京)
开班盛况开班时间:2021-02-22(北京)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2020-09-21(上海)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2019-07-22(北京)
开班盛况Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号