【小白看的Java教程】第三十五章,贝联珠贯:排序

Comparable接口(了解)

缺省情况下,TreeSet中的元素会采用自然排序(从小到大),此时要求元素对象必须实现java.util.Comparable接口,大多数JDK自带的类都实现了该接口,比如八大包装类和String。

TreeSet会调用元素的compareTo方法来比较元素的大小关系,然后将集合元素按照升序排列。

比较规则,拿当前元素和另一个元素做比较:

+ this  >    o:返回正整数   1 ,优先级较高

+ this  

+ this  ==  o: 返回    0    ,此时认为两个对象为同一个对象。

此时compareTo方法返回0,则认为两个对象是同一个对象,返回正数排前面,返回负数排后面。

如果我们自定义一个类,需要存储到TreeSet中,此时我们需要让该类实现Comparable接口,并覆盖compareTo方法,在该方法编写比较规则。

需求:按照用户的年龄从小到大排序

输出结果:

第一步:第一个节点进去,直接作为根节点,无需比较

第三步:第三个节点进去和第一个节点做比较,返回-1,再和第二个节点做比较。

第五步:第四个节点进去先和will比较,再和stef比较。

image.png

Comparator接口(了解)

TreeSet除了默认支持自然排序外,还支持自定义排序,此时需要在构建TreeSet对象时传递java.util.Comparator接口的实现类对象,Comparator表示比较器,里面封装比较规则。

此时compare方法返回0,则认为两个对象是同一个对象,返回正数排前面,返回负数排后面。

需求:根据用户的名字长度排序,如果名字相同按照年龄排序。

输出结果:

小结:HashSet做等值查询效率高,TreeSet做范围查询效率高,在开发中一般使用HashSet就可以了。

若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请参看https://ke.qq.com/course/272077。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93565 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年8月15日
下一篇 2018年8月15日

相关推荐