TreeSet和TreeMap内外部比较器

本文介绍了TreeSet和TreeMap的内部与外部比较器概念。TreeSet在插入元素时依据比较器进行排序存储,通过内部或外部比较器实现。TreeMap同样依赖比较器来组织键值对,支持自定义排序方式。
摘要由CSDN通过智能技术生成

TreeSet和TreeMap内外部比较器

TreeSet

TreeSet是Set集合,当你向其中插入数据时,会对插入的数据跟已有的数据进行比较,会按照比较的顺序进行存储.

原理图

 

 

内部比较器

  1. 实体类对象需要implements Comparable<当前实体类User>
  2. 实现里面的compareTo(当前实体类User o)

@Override

public int compareTo(User o) {

return this.getAge()-o.getAge();

}

  1. 不实现会出现User cannot be cast to java.lang.Comparable异常
  2. 测试

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);

});

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值