黑马程序员技术交流社区
标题:
TreeSet的排序问题
[打印本页]
作者:
黑马胡林
时间:
2012-4-1 12:44
标题:
TreeSet的排序问题
Set 不是无序的么,为什么 TreeSet 可以有序,为什么要定义一个比较器啊,实现Comparable ,Comparator.里面方法都有什么特点。看视频,我都湖涂了...
作者:
乔玉吉
时间:
2012-4-1 13:12
set是无序的,可以这样理解,它不会按照你new对象的先后顺序排列到集合中,没有先进先出或先进后出的性质,因为它没有角标,
当你实现了Comparable,就具备了可比性,然后覆盖Comparable中的compareTo方法,这个方法会返回一个整数,大于0,小于0,和等于0,
每次new对象的时候就会自动调用这个比较方法compareTo,把新new的对象和已经存在的对象1对多的逐步比较,根据比较的的结果确定
自己存放的位置,比较的原则就是你覆盖compareTo时的自定义比较内容,如果你按名字比较,结果就会按名字的首字母自然排序,如果你按年龄比较就
会按年龄的大小进行排序.
视屏多看几遍就明白了 , 要 悟 .
作者:
陈苓
时间:
2012-4-1 23:20
TreeSet:用于给Set集合中的元素按照指定的顺序进行排序。底层是二叉树数据结构。
如何保证元素唯一性呢?
就是通过元素对象的比较方法返回值来确定的。如果为0,视两个元素为相同元素,不存。
排序方式一:
让元素自身具备比较功能,就是强制让元素去实现Comparable接口,覆盖compareTo方法。
这时元素具备的自然排序。
可是如果元素自身不具备比较功能,获取具备的比较功能不是所需要的。
这时排序方式一就用不了了。
排序方式二:
让集合自身具备比较功能,需要定义比较器,其实就是将实现了Comparator接口的子类对象作为
参数传递给TreeSet集合的构造函数。让TreeSet集合一创建就具备了比较功能。
该子类必须要覆盖compare方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2