记住:排序时,当主要条件相同时,一定要判断一下次要条件。
TreeSet的自然排序:元素自身具备比较性
TreeSet会调用元素的compareTo(Object o)方法来比较元素之间的大小关系,
然后将集合里的元素按升序排列.
此时需要排序元素的类必须实现Compareble 接口,
并覆写其intcompareTo(Object o)方法;该方法用于比较对象,
若:obj1,compareTo(obj2),
返回0,表示两个对象相等,
若返回一个正整数,表示obj1 大于obj2,
若返回一个负整数,表示obj1 小于obj2;
TreeSet集合而言,判断两个对象相等的标准是:compareTo()方法比较返回0;
TreeSet的定制排序:元素自身不具备比较性时,或者具备的比较性不是所需要的,
就定制排序,比如降序排序,就可以使用Comparator接口了:
该接口包含int compare(Object o1,Object o2)方法:
用于比较两个对象的大小,比较结果和compareTo方法一致;
要实现定制排序,需要在创建TreeSet集合对象时,提供一个一个Comparator对象,
该对象里负责集合元素的排序逻辑;TreeSet(Comparator comparator)
定义了比较器,将比较器作为参数,传递给TreeSet集合的构造函数。
|
|