Java集合框架系列——TreeMap

直通车:Java集合框架系列目录

  1. 基本概念
  2. 继承关系
  3. 结构特点
  4. 常用API
  5. 遍历方式
  6. 代码示例

#1.基本概念
TreeMap:一种键值有序排列的映射表。

#2.继承关系
这里写图片描述

TreeMap是一个继承于AbstractMap的散列表,它存储的内容是键值对(key/value)映射。
TreeMap 实现了NavigableMap接口,意味着它支持一系列的导航方法。比如返回有序的key集合。
TreeMap实现了Cloneable接口,即覆盖了函数clone(),能被克隆。
TreeMap实现java.io.Serializable接口,意即TreeMap支持序列化,能通过序列化传输

public class TreeMap<K,V>
    extends AbstractMap<K,V>
    implements NavigableMap<K,V>, Cloneable, java.io.Serializable {}

#3.结构特点

  • 基于红黑树实现
    红黑树又称红-黑二叉树,它首先是一棵二叉树,它具备二叉树所有的特性。同时红黑树亦是一颗自平衡的排序二叉树。

  • 默认按升序排序
    如果需要按其他顺序排列,需要定义一个比较器类,实现Comparator接口,重写compare方法。

  • 不允许null键,允许null值
    可以通过覆写compare方法(令元素为null时返回非0值)来允许TreeMap添加null键。但这样做的话,在用get(null)时会返回null

TreeMap<String, Integer> ts = new TreeMap<>(new Comparator<String>() {
            public int compare(String s1, String s2) {      // 这里明确s1是要拿进来存的数据 s2是已经存进来的数据
                if (s1 == null) {
                    return 1;
                }
                else {
                    return s2.charAt(0) - s1.charAt(0);
                }
            }
        });
        ts.put(null, 3);
        System.out.println(ts.get(null));//输出null

不覆写compare的缺省情况下,get(null)会返回java.lang.NullPointerException空指针异常。

  • 不允许一键多值
    可以通过覆写compare方法(令元素相等时返回非0值)来允许TreeMap的某个键Key添加多个值。但这样做的话,在用get方法获取该键的Value时会返回null
Map<Integer, String> map = new TreeMap<>(new Comparator<Integer>() {

   
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值