首页 > 其他 > 详细

Map实现类

时间:2020-07-04 20:11:28      阅读:30      评论:0      收藏:0      [点我收藏+]


?

一. HashMap


  1. 数据结构:数组+链表

  2. 特点:

    1. null可以作为值和键,但是键只允许一个null,而值可以有多个null元素。
    2. 键不能重复
    3. 无法保证元素的存入顺序
  3. 构造方法:

    1. HashMap()

      构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。16*0.75=12

    2. HashMap(int initialCapacity)

      构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap。

    3. HashMap(int initialCapacity, float loadFactor)

      构造一个带指定初始容量和加载因子的空 HashMap。

  4. 注意:

    1. 翻倍扩容,扩容后可能会出现rehash
    2. 1.8之后,当链表的长度超过8时,将HashMap底层结构转为红黑树的结构。当链表的长度小于6时,再从红黑树的结构转回来

?

二. Hashtable


从JDK1.2开始,才让Hashtable作为Map的实现类

  1. 特点:

    1. 任何非 null 对象都可以用作键或值,对于null的键和值,HashTable会抛出空指针异常。(有别于HashMap)
  2. 构造方法:

    1. Hashtable()

      用默认的初始容量 (11) 和加载因子 (0.75) 构造一个新的空哈希表

  3. HashMap和Hashtable的区别:

    1. HashMap允许键存在一个null,值允许有多个null,而对于Hashtable来说,键值都不允许为null,否则运行会抛出空指针异常;
    2. 默认大小,HashMap为16,Hashtable为11
    3. HashMap线程不安全的,效率高;Hashtable线程安全的,效率低。

?

三. LinkedHashMap


是HashMap的子类,可以确保元素存储的顺序;底层其实是维护了一个双重链表;

  1. 构造方法:

    1. LinkedHashMap()

      构造一个带默认初始容量 (16) 和加载因子 (0.75) 的空插入顺序 LinkedHashMap 实例。

  2. 注意:

    1. 如果再使用map时,需要保证元素放入的顺序,这时可以使用LinkedHashMap,但效率低于HashMap。

四.?? ConcurrentMap

Map实现类

原文:https://www.cnblogs.com/juzhuxiaozhu/p/13236175.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!