HashMap源码,问map源码问题?以及LinkedHashMap,TreeMap不同

  • HashMap 中的 put 方法。put 时先判断是否为空,不为空就计算 hash 值,再使用 indexFor()方法计算数组下标。该方法仅有一条语句:h & (length - 1),这除了取模提高运算效率之外,还会使数据均匀分布在table数组上,充分利用空间。
  • LinkedHashMap 可以认为是 HashMap + LinkedList。即使用 HashMap 操作数据结构,又使用 LinkedList 维护插入元素的先后顺序。 LinkedHashMap 继承自 HashMap。(LinkedHashMap 相比于 HashMap 还额外保证了遍历顺序,解决了 HashMap 的无序问题。)
  • 如果额外要保证统计性能或者对 Key 按照一定规则排序,那么可以使用 TreeMap。TreeMap 为 CRUD 操作提供了 logN 的时间开销。相比于 HashMap 和 LinkedHashMap,从存储性能来说,TreeMap要差些;但从统计性能上,TreeMap logN的时间开销就好上不少。

转载于:https://my.oschina.net/u/4141148/blog/3068288

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值