TreeMap底层是如何添加数据的 [Java]

TreeMap两种添加方式的使用

我们在TreeMap中添加数据其实我们可以通过TreeSet集合中添加数据的过程进行类比

  • 因为我们的TreeSet集合底层其实就是创建了一个TreeMap集合,而我们使用TreeMap集合进行添加元素的时候是通过两种方式进行添加的

    1. 就是当我们使用无参构造方法创建TreeSet集合的时候我们默认是通过参数对象中重写的Comparable接口中的compareTo()方法的返回值来判断是否重合的
    • 如果compareTo()方法返回值为0,就表示重复了,如果是其他值就表示添加成功
    1. 当我们使用参数为Comparator接口实现类对象的有参构造方法创建TreeSet集合时,我们就通过这个传入进来的实参对象中的compare()方法进行比较,如果这个compare()方法的返回值为0,就表示重复,如果返回值为其他就表示没有重复(也就是添加成功)
而又因为我们在TreeSet中添加数据其实就是添加到了底层的TreeMap中的key中去了,也就是我们通过TreeMap中的key进行判断重复不重复的

同理我们使用TreeMap中添加对象其实也是和上面一样的,也是通过两种方式添加:

  1. 使用无参构造方法
    • 这个时候我们就要TreeMap集合中的key中的元素都实现Comparable接口
    • 也就是我们在TreeMap集合中添加元素是否重复是通过集合中的key来决定的,和value无关
      • 这个其实也是因为我们的TreeMap中的key是不可重复的,而TreeMap中的value是可重复的,这个时候我们又知道在TreeMap的底层是通过红黑树进行存储的
        • 而我们的红黑树中是不可以存储重复数据的,而我们的value是可重复的,这个时候如果我们使用value作为排序的对象,这个时候可能两个对象的value一样但是key不一样,这个时候我们使用value进行判断这两个元素就是重复了,但是实际这两个对象其实并没有重复
    • 这个时候是使用的TreeMap集合中的key中的元素所在类中的实现的Comparable接口中的compareTo()方法来判断的添加是否重复
  • 使用Comparable接口中的compareTo()方法进行排序我们又称之为自然排序
  1. 使用Comparator接口实现类对象作为参数的有参构造方法来创建TreeMap对象
    • 这个时候我们就会使用这个参数对象,也就是我们的Comparator接口对象,使用这个对象所在类重写的compare()方法进行判断是否重复,然后添加
  • 使用Comparator中的compare()方法进行排序我们又称之为定制排序

补充:

  1. TreeMap中添加元素时判断元素是否重复是通java比较器来实现的,也就是通过排序来判断是否重复

  2. TreeMap中是根据key进行排序的

    • 因为我们的key是和TreeMap集合的存储特征保持一致的,都是无序的,不可重复的,这个时候我们就可以通过key进行排序
      • 不能通过value进行排序,因为value的存储特征和TreeMap并不相同
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值