
HashMap,在我日常工作中,经常用。
它的内部实现是基于数组加链表,存储的是key-value键值对。它是线程不安全的。它是支持null作为key或者value的。
下面说一下hashMap的get方法实现原理,首先是将key对象求hashCode,作为对应数组的下标,对应的entry链表里存的就是键值对,如果多个key的hashcode相同即hash碰撞了,那么hashmap采取的是链表的方式解决的,当hashcode相同,put方法执行时候,就会将新键值对插入队首,原来的后移一位。
影响HashMap性能的初始容量,与加载因子0.75。当hashMap容量占比总容量大于初加载因子,则扩容一倍,将原来的键值对重新计算hashcode塞入新的链表里。
网友评论