Java基础:关于hashmap的问题

HashMap知识点

1、默认初始化容量大小1<<4 = 16;
2、最大容量1<<30 = 2的30次方;
3、默认负载因子0.75f;
4、链表树形化阈值为8(用于hash冲突产生链表还是产生红黑树的一个判断值);TREEIFY_THRESHOLD =8;如果哈希函数不合理,即使扩容也无法减少箱子中链表的长度,因此 Java 的处理方案是当链表太长时,转换成红黑树。这个值表示当某个箱子中,链表长度大于 8 时,有可能(第6点是确定因素)会转化成树;
5、在哈希表扩容时,如果发现链表长度小于 6,则会由树重新退化为链表;UNTREEIFY_THRESHOLD =6
6、在转变成树之前,还会有一次判断,只有键值对数量大于 64 才会发生转换。这是为了避免在哈希表建立初期,多个键值对恰好被放入了同一个链表中而导致不必要的转化;

Java中的HashMap、LinkedMap、TreeMap解释下?

(TreeMap红黑树,有序,HashMap无序,数组+链表/红黑树)

  • HashMap可实现快速存储和检索,但其缺点是其包含的元素是无序的,这导致它在存在大量迭代的情况下表现不佳

  • LinkedHashMap继承自HashMap,相比于HashMap,linkedHashMap结构中还维护着一个双向链表,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值