HashMap学习

数据结构

  • hashmap的数据结构包括了数组,链表,红黑树
  • 插入数据的时候使用pos=key%size来进行
  • 当两个或两个以上的key的key相同且key值不同的时候(发生冲突),就会挂在数组初始化位置的链表后
  • 当某个节点后出现过多的链表节点时,就会转换成红黑树提高效率
  • 允许 key 和 value 都为 null。key 重复会被覆盖,value 允许重复。非线程安全。无序(遍历HashMap得到元素的顺序不是按照插入的顺序

     

     

常见函数

HashMap学习

 哈希冲突

HashMap学习

哈希表是用散列函数来确定索引的位置。散列函数设计的越好,使得元素分布的越均匀。HashMap 是数组+链表+红黑树的组合,我们希望在有限个数组位置时,尽量每个位置的元素只有一个,那么当我们用散列函数求得索引位置的时候,我们能马上知道对应位置的元素是不是我们想要的,而不是要进行链表的遍历或者红黑树的遍历,这会大大优化我们的查询效率

如果在添加元素时,发生冲突,会将冲突的数放在链表上,当链表长度超过8时,会自动转换成红黑树。当红黑树的节点数小于 6 时,会转化成链表。