【集合】hashmap的实现原理,hashmap怎么解决哈希冲突的问题

最近在详细的研究hashmap的内部结构和原理,终于豁然开朗,原来hashmap是那么的完美,数组和链表的结合体。

在学习hashmap之前,首先问大家几个问题,看看是否对hashmap有了解多少,咱们通过问题进行对hashmap的学习和探索。

1、HashMap 是不是有序的?不是有序的。

2、有没有有序的Map实现类呢?有 TreeMap 和 LinkedHashMap。

3、然后问TreeMap 和 LinkedHashMap 是如何保证它的顺序的? TreeMap 是通过实现 SortMap 接口,能够把它保存的键值对根据 key 排序,基于红黑树,从而保证 TreeMap 中所有键值对处于有序状态。LinkedHashMap 则是通过插入排序(就是你 put 的时候的顺序是什么,取出来的时候就是什么样子)和访问排序(改变排序把访问过的放到底部)让键值有序。

4、你觉得它们两个(Treemap和LinkedHashMap)哪个的有序实现比较好?如果你依然可以回答的话,那么继续问你,你觉得还有没有比它更好或者更高效的实现方式?

为什么要使用HashMap?

  • HashMap是一个散列桶(数组和链表),它存储的内容是键值对key-value映射
  • HashMap采用了数组和链表的数据结构,能在查询和修改方面继承了数组的线性查询和链表的寻址修改
  • HashMap是非synchronized的,线程不安全,所以很快
  • HashMap可以接受null键和值,而HashTable不行(因为equals()方法需要对象,因为HashMap是后出的api经过处理才可以)

HashMap的工作原理是什么?

了解HashMap工作原理之前我觉得有必要了解下hashcode和equals的小知识,见&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值