TreeSet对元素进行排序的方式一:
让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖compareTo方法。
示例:
- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.TreeSet;
- //创建了一个根据Person类的name进行排序的比较器。
- class ComparatorByName implements Comparator{
- public int compare(Object o1,Object o2){
- Person p1 = (Person)o1;
- Person p2 = (Person)o2;
- int temp = p1.getName().compareTo(p2.getName());
- return temp == 0?p1.getAge()-p2.getAge() : temp;
- }
- }
- public class TreeSetDemo{
- public static void main(String[] args){
- TreeSet ts = new TreeSet(new ComparatorByName());
- //以Person对象年龄进行从小到大的排序
- ts.add( new Person("zhangsan" ,28));
- ts.add( new Person("wangwu" ,23));
- ts.add( new Person("lisi" ,21));
- ts.add( new Person("zhouqi" ,29));
- ts.add( new Person("zhaoliu" ,25));
- Iterator it = ts.iterator();
- while(it.hasNext()){
- Person p = (Person)it.next();
- System.out.println(p.getName() + ":" + p.getAge());
- }
- }
- }
复制代码
TreeSet集合第二种排序方式:
让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。将该类对象作为参数传递给TreeSet集合的构造函数。
示例2:
- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.TreeSet;
- public class TreeSetTest{
- public static void main(String[] args){
- TreeSet ts = new TreeSet(new ComparatorByLen());
- ts.add( "aaaa");
- ts.add( "zz");
- ts.add( "nbag");
- ts.add( "cba");
- ts.add( "abc");
- Iterator it = ts.iterator();
- while(it.hasNext()){
- System.out.println(it.next());
- }
- }
- }
- class ComparatorByLen implements Comparator{
- public int compare(Object o1,Object o2){
- String s1 = (String)o1;
- String s2 = (String)o2;
- int temp = s1.length() - s2.length();
- return temp == 0?s1.compareTo(s2):temp;
- }
- }
复制代码 |
|