Java 哈希表数据结构

HashMap哈希表是一个以数组和单向链表的集合体数据查询效率高链表增删效率高哈希表结合在一起,发挥他们的优点 哈希表底层源代码 public class HashMap{ HashMap底层实际是一个数组 Node<K,V>[] table 静态内部类HashMap.Node static calsss Node<K,V>{
摘要由CSDN通过智能技术生成

HashMap

哈希表是一个以数组和单向链表的集合体
数据查询效率高
链表增删效率高
哈希表结合在一起,发挥他们的优点

     哈希表底层源代码
       public class HashMap{
           HashMap底层实际是一个数组
           Node<K,V>[] table
     
           静态内部类HashMap.Node
           static calsss Node<K,V>{
               final int hash; //哈希值(哈希值是 key的hashCode方法的指向结果,hash值通过哈希函数/算法可以转换成储存数组的下标
               final K key; //储存到Map集合中的那个key
               V value; //存储到Map集合中的value
               Node<K,V> next ; //下一个节点的内存地址
           }
       }

就是说,一个节点有四个元素:哈希值,K,V,下一个节点的内存地址
哈希表/散列表:一维数组,这个数组中每一个元素都是一个单向链表(数组和链表的结合体)

put()原理

每次向里面添加K,V的时候会利用Key的hashCode()方法生成一个哈希值(独一无二,类似内存地址)
并用算法决定数组下标,如果下标重复,会拿着Key与此链表里的节点进行equals比对,相同则覆盖数据(意为Key不允许重复),反则往末尾里再添加一个Node(链表添加节点)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值