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。

hashset的存储方式

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

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

推荐阅读:

hashset底层实现原理详解,原理介绍

hashset和treeset区别是什么?有什么区别?

hashmap的实现原理和hashset的实现原理是什么?