哈希表简单认识

哈希值

哈希值是由十进制数构成的值,在Java中根据对象的物理地址和属性、方法等映射出来的一个值(模拟的逻辑地址,并不是一个实际的存储物理地址),也就是说两个对象物理地址相同哈希值一定相同,但是哈希值相同的两个对象物理地址并不一定相同。


在Java中哈希值可以通过Object的hashCode的方法获取

在java中所有的引用类型每个引用都有相应的哈希值包括数组

作用:提升查询数据的速度

哈希表

哈希表数其实是一种数据结构,在java中哈希表就是一个存放着哈希值通过哈希函数映射出来一个个值的数组。只是数组存放的是单一的数据,而哈希表存放的是键值对(哈希值和对象)。在Java中哈希表的数据结构是数组+链表或者数组+红黑树

哈希冲突:在哈希表中哈希值一样的对象会存放在数组的同一位置,为了查询方便通过链表或者红黑树的数据结构将它们存储(链表长度等于8自动转换为红黑树)

【关于哈希值存放数组的位置】它会根据数组的长度再结合哈希值得到哈希函数通过该函数得出一个在数组位置的索引值将哈希值放在该位置中。

【数组扩容】哈希表中数组容量达到增长因子的容量就会进行扩容,在HashSet是到占数组容量的75%就会以数组的二倍进行扩容

参考资料:百度百科庆哥java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值