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()+"\t");//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()+"\t\t");
}
浙公网安备 33010602011771号