java hashset的存储方式,hashset的存储方式及存储原理介绍

hashset的存储方式以及存储原理是怎样的呢?今天要和大家一起讨论的就是这个问题,下面让我们一起通过以下的文章内容来对这个问题进行基础的了解吧。

1、hashset存储方式介绍

hashset究竟是怎样存储的呢?hashset进行储存对象的时候,会先依据对象的hash值来确定它的位置区域,之后再去通过equals去和相同hash值的对象去比较。

假如,是true,那么就不进行存储,假如,是false,那么就进行链式储存。

以上就是对于hashset的存储方式的一个非常简单的介绍了,下面再一起来了解一下hashset的存储原理吧!

2、hashset存储原理介绍

hashset底层用哈希散列表来存储对象,是默认长度为16的数组。

假如:Set set=new HashSet();

set.add(obj);

内部存储过程:

定义h=obj.hashCode,得到obj对象的哈希码h,再对h进行hash散列运算,对数组长度进行求余。

如果,长度是16,那么就返回一个0-15之间的值,然后,这个值就是存在HashSet数组中的下标。

假如,下标位置没有对象,那么就将obj加到这个位置。

假如,已经有对象,那么就用equals判断两对象是不是相等。

假如相等,那么舍弃obj,假如,不相等,那么就将obj以节点的方式加在这个对象的下面。

所以,只有覆盖了对象的equals方法和hashCode方法,让这个方法按自己的算法运算的话,才可以算得上是相同的对象。

覆盖hashCode方法一共有两个原则,一是让equals相等的对象返回相同的hashCode,二是尽量保证equals不相同的对象返回不同的hashCode。

31e5bdff2cba2985fc9f59cb62356fe0.png

hashset存储方式和hashset存储原理就给你介绍到这里啦,还是比较的好理解的呢!

请继续关注奇Q工具网吧,更多java常见问题及解决方法可以帮助你解答。

推荐阅读:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值