HashSet集合

简介:

HashSet集合:

hashSet集合是把存储进来的对象先计算出对象的hash值后才进行对应的存储,因为存储进来的对象都有一个hash值,所以在进行查询的时候不需要像其他集合一样,一个个去查询来得到所需要的对象。hashSet集合只需要把要查询的对象计算出hash值后查找存储区域里hash值一样的对象,然后拿出来即可。这样检索速度就会相当快,这也是hashSet集合的优点。

 

hashSet集合里如果存储对象时出现两个或多个相同的hash值,则会以单链的形式挂在同一个hash值下,所以数组的长度越长检索的速度越快,因为数据分开的比较散不会挤在一起。如果数组太短的话存储的对象就会拥挤在同一个hash值下,这样检索起来自然会慢很多。

 

HashSet集合与数组集合检索速度对比:

数组集合检索:

93443ed2905030139036ae6e288153f8.png


HashSet集合检索:

9f5a2c46358677c8a492f4bc3080aa8c.png


速度对比:

f84ccd0b22189103b39e10cd660bec64.png


运行结果:

695358ff6c8526beab6b42e012a63499.png

从以上实验可以看得出速度相差的不是一点点。




单链引用示意图:

e7246db151be6a7edaa6a8a24222b293.png



数组存储示意图:

30231967baca1da0cc9466ddbb650779.png




HashSet集合添加方法:

代码示例:

4456bce858d8bdf7b32f757dc765df2d.png

5d1c7b01ffa69a596a44583c08b298f2.png




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1976545,如需转载请自行联系原作者

相关文章
|
1月前
|
Java 程序员 C语言
赶快收藏!全网最佳Set集合详解:HashSet、TreeSet!
面试官:那TreeSet要怎么定制排序?TreeSet的自定义排序我们要利用Comparator接口,通过向TreeSet传入自定义排序规则的Comparator来实现。官方源码是这么解释的,南友们看一看。// 构造一个新的空树集,根据指定的比较器进行排序。// 插入到集合中的所有元素都必须能够通过指定的比较器相互比较: comparator. compare(e1, e2)不得对集合中的任何元素e1和e2抛出ClassCastException。
赶快收藏!全网最佳Set集合详解:HashSet、TreeSet!
|
4月前
|
存储 安全 Java
32.C#:ArrayList集合
32.C#:ArrayList集合
34 1
|
9月前
|
C#
C# 集合(ArrayList)的方法和使用
C# 集合(ArrayList)的方法和使用
|
11月前
|
存储 安全
集合框架系列(三)之 map双列集合
集合框架系列(三)之 map双列集合
|
存储 对象存储
HashSet、TreeSet、LinkedHashSet的区别
HashSet、TreeSet、LinkedHashSet的区别
84 0
|
存储 算法
TreeSet 和 HashSet 的区别
TreeSet 和 HashSet 的区别
57 0
|
存储 算法
|
存储 Java
使用Set集合及HashSet,TreeSet
使用Set集合及HashSet,TreeSet
60 0
|
存储 Java
Java集合学习3:Set集合-HashSet
无序、无下标、不可以重复元素 方法:全部继承Collection的方法
Java集合学习3:Set集合-HashSet