Treeset与Comparator接口

1. Treeset默认是按照字母顺序来排列的

  public static void DefaultTreeSet() {
        TreeSet ts = new TreeSet();
        ts.add("zbc");
        ts.add("zaa");
        ts.add("aa");
        ts.add("nba");
        ts.add("cba");
        Iterator it = ts.iterator();
        while (it.hasNext()){
            System.out.print(it.next()+"	");//aa cba nba zaa zbc
        }
    }

2.如果年龄一样大按照姓名的自然顺序排列, 否则按照年龄来排序

  public static void main(String[] args) throws Exception {
        TreeSet<User> set = new TreeSet<>(new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                return (o1.getAge()+"").compareTo(o2.getAge()+"")==0 ? o1.getName().compareTo(o2.getName()):(o1.getAge()+"").compareTo(o2.getAge()+"") ;
            }
        });
        set.add(new User("zhangsan",28));
        set.add(new User("lisi",26));
        set.add(new User("wangwu",26));
        set.add(new User("chenliu",19));
        set.add(new User("chenl",20));
        set.add(new User("chen",22));
        set.add(new User("xhaoqi",28));

        Iterator<User> it = set.iterator();
        while(it.hasNext()){
            User user = it.next();
            //chenliu:19		chenl:20		chen:22		lisi:26		wangwu:26		xhaoqi:28		zhangsan:28
            System.out.print(user.getName()+":"+user.getAge()+"		");
        }
原文地址:https://www.cnblogs.com/bravolove/p/5810267.html