谈谈HashMap的底层实现原理?

XdzPro 5月前 ⋅ 74 阅读

HashMap在JDK1.8之前是数组加链表。在JDK1.8之后是数组加链表加红黑树。 主要分为hashcode()方法和equals()方法。 put操作: hashcode方法内使用(n-1)&hash是找到元素应该存储的位置。 如果桶为空,直接将元素放入 若出现哈希冲突,不为空时,使用equals方法进行遍历数组或者红黑树来查看是否有相同的元素。 若有,则覆盖key对应的value值 若无,直接放在数组或红黑树的末尾。 get操作: hashcode方法内使用(n-1)&hash是找到元素应该存储的位置。 使用equals方法进行遍历看get元素与槽中元素是否一致,一直返回true位置 若一直为false说明该槽中没有所要找的元素。

这里举例hashmap的话是: 1.实际开发需求中hashmap有100个元素,需要不扩容,所以要设置合适的初始大小,我设置的是256 2.如何遍历hashMap的,用EntrySet不用KeySet.因为EntrySet直接获取到键值对,而KeySet只能获取到键。


全部评论: 0

    我有话说: