本帖最后由 xuemeng 于 2013-5-14 21:37 编辑
楼上的回答的很好!!
后面的我补充上, 首先我们知道要给TreeSet添加元素, 必须满足两个条件中的任何一个:
1, 是让元素所属类实现Comparable接口, 让元素具有可比性!!!
2, 就是让TreeSet具备比较器, 那么它添加的元素会按照比较器的定义的规则进行排序, 那么TreeSet怎么具备比较器呢? TreeSet类提供了一个有参构造器
new TreeSet(Comparator comparator), 该构造器中的参数接受的是比较器, 也就是说, 使用该构造器创建对象, 那么创建出来的TreeSet集合对象就具有比较器, 又因为Comparator是一个接口, 所以我们无法创建对象,而这里的参数又必须是Comparator类型的, 那么怎么办了? 我们就只好传递它的实现类对象, 这也是为什么你的代码中要实现 Comparator接口的原因 ,但是如果你仅仅只是实现了Comparator接口, 但是你的TreeSet用的构造器如果不是new TreeSet(Comparator comparator) 这个构造器, 那么你创建出来的TreeSet对象就不具备比较器啊, 不具备比较器那你添加的元素就没法按照你定义的规则进行排序啊!!
|