首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

HashSet集合

HashSet集合hashSet集合是把存储进来的对象先计算出对象的hash值后才进行对应的存储,因为存储进来的对象都有一个hash值,所以在进行查询的时候不需要像其他集合一样,一个个去查询来得到所需要的对象...hashSet集合只需要把要查询的对象计算出hash值后查找存储区域里hash值一样的对象,然后拿出来即可。这样检索速度就会相当快,这也是hashSet集合的优点。...在hashSet集合里如果存储对象时出现两个或多个相同的hash值,则会以单链的形式挂在同一个hash值下,所以数组的长度越长检索的速度越快,因为数据分开的比较散不会挤在一起。...HashSet集合与数组集合检索速度对比: 数组集合检索: ? HashSet集合检索: ? 速度对比: ? 运行结果: ? 从以上实验可以看得出速度相差的不是一点点。 单链引用示意图: ?...HashSet集合添加方法: 代码示例: ? ?

71120
您找到你想要的搜索结果了吗?
是的
没有找到

java集合框架-HashSet

HashSet的特点HashSet是一个无序的集合,它不保证元素的顺序,并且允许存储null元素(只能存储一个null元素)。...HashSet中不允许存储重复的元素,当尝试将一个已经存在于集合中的元素添加到HashSet中时,该元素将不会被添加。...HashSet是基于哈希表的实现,它使用哈希函数将元素映射到哈希表中的某个位置,从而实现快速查找和插入元素。...HashSet的常用方法HashSet实现了Set接口的所有方法,因此可以使用Set接口的方法来操作HashSet对象。此外,HashSet还定义了一些自己的方法,下面介绍一些常用的方法。...除了去除数组中的重复元素,HashSet还可以用于去除其他集合中的重复元素,以及判断两个集合是否相等等场景。

34131

Java集合框架(三)-HashSet

大佬的理解-> Java集合HashSet  1、HashSet特点 存放的元素是无序的(不保证添加元素的顺序) 元素唯一(不可以重复) 可以存null,但是只能存放1个 虽然set集合不保证添加元素的顺序...,但是集合中存放的元素顺序其实是固定的,根据元素的hash值确定的顺序 2、HashSet原理分析 HashSet底层,是借助HashMap实现的; 3、HashSet初始化 Set...strSet = new HashSet(); 4、HashSet常用方法 方法 说明 size() 结合元素个数 contains(Object o) 集合是否包含某个元素 4.1 size()...// 获取set集合元素个数方法:size() 4.2 contains(Object o) // 判断set集合中是否包含某个元素方法:contains(元素) 4.3 list的其它常用方法,set...集合是如何确定元素唯一的 6.1 HashSet添加一个元素的过程 此处原文链接 调用对象的hashCode()方法获取对象的哈希值; 根据对象的哈希值计算对象的存储位置; 判断该位置是否有元素

36130

【深入理解java集合系列】HashSet实现原理

HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。...HashSet实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet实现比较简单,相关HashSet的操作,基本上都是直接调用底层.../** * 以指定的initialCapacity和loadFactor构造一个新的空链接哈希集合。...* 由于HashMap的put()方法添加key-value对时,当新放入HashMap的Entry中key * 与集合中原有Entry的key相同(hashCode()返回值相等,通过equals...比较也返回true), * 新添加的Entry的value会将覆盖原来Entry的value,但key不会有任何改变, * 因此如果向HashSet中添加一个已经存在的元素时,新添加的集合元素将不会被放入

76630

JAVA集合Set之HashSet详解

HashSet这个类实现了Set集合,实际为一个HashMap的实例。对集合的迭代次序没有任何保证; 特别是,它不能保证订单会随着时间的推移保持不变。这个类允许null 元素。...list是根据下标map是根据具体key取值) 接下来我们看一下HashSet的add方法: 这个方法实际上是添加的一个put方法,描述的意思是:向这个set集合中添加元素,如果这个元素没有在集合中则添加到这个集合中...具体添加如下: 另外三个构造函数简答列举一下: HashSet(Collection c) 构造一个包含指定集合中的元素的新集合。...最后总结一下: 此文章主要介绍了一下Set的一种实现HashSet的具体实现和保证key不重复的源码算法和原因。...并且在最后说明一下上面忘记了:此实现不同步,为线程不安全的实现,如果有多个线程同时访问这个容器(HashSet),并对立面的元素进行了修改,则需要在外部同步。

45440

HashSet检索方法与集合框架体系

HashSet检索方法:   首先申请一个返回值为boolean类型的方法参数类型依然为Object,前面同样的使用添加方法里的判断和计算传进来对象的hash值。...经过判断后不为null就代表这个数组下标里储存着数据,有数据的话就申请一个Object数组把这里面的数组先拿出来,因为HashSet集合里存储值的时候是使用的单链,所以需要强制转换成数组: ?...集合框架体系: 在集合框架体系中,Collection接口是整个集合框架中最高接口,里面定制了集合最基本的所有方法。...所以适合用于添加大量数组的事情上 Set系列的集合有:HashSet是无序的,hash值结构集合  TreeSet排序的,二叉树结构集合 List系列的集合有:ArrayList不带线程安全的数组集合...Vector带线程安全的数组集合 Stack堆栈集合,Stack是继承于Vector的子类  LinkedList双链表集合 继承示意图: ?

46220

Set集合和其子类HashSet、LinkedHashSet

文章目录 HashSet集合介绍 HashSet集合存储数据的结构(哈希表) 什么是哈希表呢?...Set集合有多个子类,这里我们介绍其中的 java.util.HashSet、 java.util.LinkedHashSet这两个集合。...HashSet集合介绍 java.util.HashSet是Set接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)。...java.util.HashSet底层的实现其实是一个java.util.HashMap支持。 HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。...HashSet集合存储数据的结构(哈希表) 什么是哈希表呢? 在JDK1.8之前,哈希表底层采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。

33521

HashSet集合中hashCode及equals方法详解

首先我们熟知HashSet集合中元素存储的特点: 1)不允许元素重复; 2)不会记录元素添加的先后顺序; 3)HashSet中比较两个对象是否相同,要使用equals()方法,不能使用 =...由于HashSet集合中的元素不能重复存储,那应该怎样做呢?...接下来我们就来讲解一下采用哈希表(散列)算法实现元素不可重复存储,具体的思想: 第一: 1)Set集合中元素没有顺序,不能重复; 2)元素重复是指:存储对象的重复; 3)何为对象的重复:...程序向HashSet集合中添加一个元素时,先调用对象的hashCode()方法计算出该对象的哈希码值; 比较: (1)如果该对象与集合中所存储的全部对象的哈希码值不一致,则该对象就不重复,计算出该对象在哈希表中的索引位置...HashSet集合底层采用了哈希算法实现,多个不同的对象可能返回的哈希码值不同,但是通过计算得到的哈希表中的索引位置相同,这样就再次需要通过equals()方法来判断这两个对象的属性值是否相同,比较完再做相应的处理

57990

Java 集合框架 HashSet 和 HashMap 源码剖析

总体介绍 之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说HashSet里面有一个HashMap(适配器模式)。...HashMap实现了Map接口,允许放入null元素,除该类未实现同步外,其余跟Hashtable大致相同,跟TreeMap不同,该容器不保证元素顺序,根据需要该容器可能会对元素重新哈希,元素的顺序也会被重新打散...根据对冲突的处理方式不同,哈希表有两种实现方式,一种开放地址方式(Open addressing),另一种是冲突链表方式(Separate chaining with linked lists)。...前面已经说过HashSet是对HashMap的简单包装,对HashSet的函数调用都会转换成合适的HashMap方法,因此HashSet实现非常简单,只有不到300行代码。...//HashSet是对HashMap的简单包装 public class HashSet { ......

41120

HashSet集合中hashCode及equals方法详解

首先我们熟知HashSet集合中元素存储的特点: 1)不允许元素重复; 2)不会记录元素添加的先后顺序; 3)HashSet中比较两个对象是否相同,要使用equals()方法,不能使用 ==; 4)底层依然使用哈希表...由于HashSet集合中的元素不能重复存储,那应该怎样做呢?...接下来我们就来讲解一下采用哈希表(散列)算法实现元素不可重复存储,具体的思想: 第一: 1)Set集合中元素没有顺序,不能重复; 2)元素重复是指:存储对象的重复; 3)何为对象的重复:内存中,所在内存编号一致...程序向HashSet集合中添加一个元素时,先调用对象的hashCode()方法计算出该对象的哈希码值; 比较: (1)如果该对象与集合中所存储的全部对象的哈希码值不一致,则该对象就不重复,计算出该对象在哈希表中的索引位置...HashSet集合底层采用了哈希算法实现,多个不同的对象可能返回的哈希码值不同,但是通过计算得到的哈希表中的索引位置相同,这样就再次需要通过equals()方法来判断这两个对象的属性值是否相同,比较完再做相应的处理

1.5K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券