TreeSet和TreeMap内外部比较器
TreeSet
TreeSet是Set集合,当你向其中插入数据时,会对插入的数据跟已有的数据进行比较,会按照比较的顺序进行存储.
原理图
|
内部比较器
@Override public int compareTo(User o) { return this.getAge()-o.getAge(); }
Set<User> users = new TreeSet<>(); users.add(new User("zhangsan",24)); users.add(new User("lisi",23)); users.add(new User("wangwu",26)); for(User user:users) { System.out.println(user); } |
外部比较器
1实体类不需要实现implements Comparable<当前实体类User> 2、测试 Set<User> users = new TreeSet<>(new Comparator<User>() { @Override public int compare(User o1, User o2) { // TODO Auto-generated method stub return o1.getAge()-o2.getAge(); } }); users.add(new User("zhangsan",24)); users.add(new User("lisi",23)); users.add(new User("wangwu",26)); for(User user:users) { System.out.println(user); } |
TreeMap
外部比较器
Map<User,String> map = new TreeMap(new Comparator<User>() {
@Override public int compare(User o1, User o2) { // TODO Auto-generated method stub return o1.getAge()-o2.getAge(); } }); map.put(new User("zhangsan",24),"zhangsan"); map.put(new User("lisi",23),"lisi"); map.put(new User("wangwu",26),"wangwu"); map.forEach((key,value)->{ System.out.println(key+"\t"+value); }); |