一天一个java知识(深入理解map)

也许你对这样一行代码不陌生:
Map<K, V> map = new HashMap<K, V>()
但是你了解java map吗?
在这里插入图片描述
这是一张java集合图,里面包含了所有常见的集合其中Map:
Map是一种从键映射到值的结构,存储键值对,其中key都是唯一的不允许重复,而值可以重复。实现Map的子类有很多:HashMapTreeMapLinkedMap等。虽然实现了相同的接口,但是执行效率并不完全相同。HashMap基于散列表实现,采用对象的hashCode进行快速查询;LinkedMap采用列表来维护内部顺序;TreeMap通过红黑树的数据结构来实现的,内部元素按需排列。

  1. HashMap
    HashMap是最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有较快的访问速度,遍历时,取得数据的顺序是完全随机的。因为键对象不可以重复的原因,HashMap最多只允许一条记录的键为Null
    在添加时,先hash到指定的地方,然后将next设置为原来的实体类(entity)查找时,也是先找到制定的下标的元素。然后遍历整个链表。查找到equals相等的那个元素HashMap非线程安全
    在这里插入图片描述
  2. Hashtable
      Hashtable与HashMap类似,是HashMap的线程安全版,它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢,它继承自Dictionary类,不同的是它不允许记录的键或者值为null,同时效率较低。Hashtable线程安全
      在这里插入图片描述
  3. LinkedHashMap
      LinkedHashMap保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部特性。
    TreeMap
    在这里插入图片描述
  4. TreeMap
    基于红黑二叉树实现,线程非安全,不允许键对象是null,key不可以重
    复,value允许重复,存入TreeMap的元素应当实现Comparable接口或者实现Comparator接口,会按照排序后的顺序迭代元素,默认升序,两个相比较的key不得抛出classCastException。主要用于存入元素的时候对元素进行自动排序,迭代输出的时候就按排序顺序输出。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值