hashset和hashmap有什么关系

HashMap、HashSet、Hashtable的区别 突然发现整理了很多笔记,应该放这里做备用 Hashtable和HashMap 主要区别:线程安全性,同步(synchronization),以及速度。 HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null。Hashtable是线程安全的,多个线程可以共享一个Hashtable。 HashMap的同步问题可通过Collect... 阅读详情

http://blog.youkuaiyun.com/u014033756/article/details/50599879

1、HashSet底层是采用HashMap实现的。HashSet 的实现比较简单,HashSet 的绝大部分方法都是通过调用 HashMap 的方法来实现的,因此 HashSet 和 HashMap 两个集合在实现本质上是相同的。
2、HashMap的key就是放进HashSet中对象,value是Object类型的。
3、当调用HashSet的add方法时,实际上是向HashMap中增加了一行(key-value对),该行的key就是向HashSet增加的那个对象,该行的value就是一个Object类型的常量

  1. HashSet概述
    HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。
  2. HashSet的实现
    如果不等,则添加到该数组索引对应的链表中。

 Set的实现类的集合对象中不能够有重复元素,HashSet也一样他是使用了一种标识来确定元素的不重复,HashSet用一种算法来保证HashSet中的元素是不重复的,   HashSet采用哈希算法,底层用数组存储数据。默认初始化容量16,加载因子0.75

 Object类中的hashCode()的方法是所有子类都会继承这个方法,这个方法会用Hash算法算出一个Hash(哈希)码值返回,HashSet会用Hash码值去和数组长度取模, 模(这个模就是对象要存放在数组中的位置)相同时才会判断数组中的元素和要加入的对象的内容是否相同,如果不同才会添加进去。

 Hash算法是一种散列算法。

Set hs=new HashSet();

hs.add(o);
|
o.hashCode();
|
o%当前总容量 (0–15)
|
| 不发生冲突
是否发生冲突—————–直接存放
|
| 发生冲突
| 假(不相等)
o1.equals(o2)——————-找一个空位添加
|
| 是(相等)
不添加

   覆盖hashCode()方法的原则:
   1、一定要让那些我们认为相同的对象返回相同的hashCode值
   2、尽量让那些我们认为不同的对象返回不同的hashCode值,否则,就会增加冲突的概率。
   3、尽量的让hashCode值散列开(两值用异或运算可使结果的范围更广)
   HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMap的相关方法来完成,我们应该为保存到HashSet中的对象覆盖hashCode()和equals(),因为再将对象加入到HashSet中时,会首先调用hashCode方法计算出对象的hash值,接着根据此hash值调用HashMap中的hash方法,得到的值& (length-1)得到该对象在hashMap的transient Entry[] table中的保存位置的索引,接着找到数组中该索引位置保存的对象,并调用equals方法比较这两个对象是否相等,如果相等则不添加,注意:所以要存入HashSet的集合对象中的自定义类必须覆盖hashCode(),equals()两个方法,才能保证集合中元素不重复。在覆盖equals()和hashCode()方法时, 要使相同对象的hashCode()方法返回相同值,覆盖equals()方法再判断其内容。为了保证效率,所以在覆盖hashCode()方法时, 也要尽量使不同对象尽量返回不同的Hash码值。

如果数组中的元素和要加入的对象的hashCode()返回了相同的Hash值(相同对象),才会用equals()方法来判断两个对象的内容是否相同。

【100%通过率】华为机试真题 Python 实现【对称美学】【2022.11 Q4 新题】 对称就是最大的美学,现有一道关于对称字符串的美学。 已知: 第1个字符串:R 第2个字符串:BR 第3个字符串:RBBR 第4个字符串:BRRBRBBR 第5个字符串:RBBRBRRBBRRBRBBR相信你已经发现规律了,没错! 就是第i个字符串=第i-1号字符串的取反+第i-1号字符串。取反即(R->B,B->R); 现在告诉你n和k,让你求得第n个字符串的第k个字符是多少。(k的编号从0开始) 阅读详情

相关推荐

Elasticsearch 8.17.1 JAVA工具类

整理了Elasticsearch8.17最新版的API工具类

weixin_39555954的博客 1123

HashMap和HashSet之间的关系

分别简单介绍了HashMap和HashSet,然后又介绍了HashMap和HashSet之间的关系

q495745324的博客 469

手把手教你用TL431设计反激电源补偿器(附波特图调试技巧)

本文详细介绍了如何使用TL431设计反激电源补偿器,并提供了波特图调试技巧。通过实战经验分享,帮助工程师快速掌握补偿网络设计、分压电阻计算和稳定性判据,避免常见设计误区,提升电源稳定性与效率。

weixin_29201859的博客 376

HashMap和HashSet的那些关系

上一节讲了TreeSet、TreeMap的关系,具体可以看博客TreeSet与TreeMap那些关系,这一节讲解的HashMap,HashSet其底层都是用哈希表实现的Map,Set。接下来将介绍,他们之间的一些区别。解释说明哈希表也称散列表,是为了提高搜索效率,不经过任何比较,一次直接从表中得到要搜索的元素(理想情况哈希表是通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系。结构如图:以一下哈希函数的存储方式。这种情况下,会出现哈希冲突。

薯条和番茄酱的博客 413

开源ISP实战(1)——基于Zynq7020的Vivado工程移植与调试

本文详细介绍了将开源ISP项目移植到正点原子Zynq7020开发板的实战过程。重点阐述了在Vivado中进行工程创建、IP核导入、Block Design框架搭建、时钟配置与管脚约束修改等关键步骤,并提供了系统联调与常见问题的排查思路,为FPGA图像处理开发者提供了完整的移植与调试指南。

weixin_29191081的博客 200

DINOv3实战指南:如何利用零样本视觉模型革新工业质检

本文详细介绍了如何利用DINOv3零样本视觉模型革新工业质检流程。通过无需标注数据的自监督学习技术,DINOv3能快速部署高精度检测系统,显著降低成本和提升效率。文章涵盖模型选型、数据准备、实时检测优化及典型行业解决方案,为工业质检提供革命性AI实践指南。

ansible6ops的博客 120

HashSet与HashMap的区别

HashSetHashSet是 Java 集合框架中实现Set接口的一个常用类。HashSet是一个不允许存储重复元素的集合,它使用哈希表来存储元素,确保集合中的每个元素都是唯一的。由于使用了哈希表,HashSet具有高效的查找、插入和删除性能,平均时间复杂度为 O(1)。主要特性:不允许重复元素HashSet中的元素是唯一的,即使尝试将相同的元素多次添加到HashSet中,它也只会保留一个实例。无序性HashSet不保证集合中元素的顺序。元素的顺序可能与插入顺序不同,迭代时的顺序也不可预测。允许。

Flying_Fish_roe的博客 2582

使用moveit中的报错及解决

1.fatal error: moveit/move_group_interface/move_group.h: 没有那个文件或目录。// #include <moveit/move_group_interface/move_group.h> 改为。问题1 moveit/move_group_interface/move_group.h: 没有那个文件或目录。在运行c++程序时报错。

qq_60566155的博客 2285

HashSet的实现,与hashMap的关系

1、HashSet底层是采用HashMap实现的。HashSet 的实现比较简单,HashSet 的绝大部分方法都是通过调用 HashMap 的方法来实现的,因此 HashSet 和 HashMap 两个集合在实现本质上是相同的。 2、HashMap的key就是放进HashSet中对象,value是Object类型的。 3、当调用HashSet的add方法时,实际上是向HashMap中增加

u014033756的专栏 6593

Windows配置L2TP/IPsec连接

Windows 系统的 L2TP/IPsec 功能,通过配置即可构建加密 VPN 通道。

m0_61806534的博客 1666

PyTorch实战(30)——使用TorchScript和ONNX导出通用PyTorch模型

在本节中,我们将深入探讨使用 TorchScript 导出 PyTorch 模型。通过序列化,TorchScript 使模型与 Python 生态系统独立,从而使得模型可以在其他环境中加载,例如基于 C++ 的环境。我们还跨越 Torch 框架与 Python 生态的边界,研究机器学习通用开放格式 ONNX,该技术能帮助我们将 PyTorch 训练的模型导出至非 PyTorch 甚至非 Python 环境。

盼小辉丶的博客 3481

HashSet和HashMap的关系

public class HashSet     extends AbstractSet     implements Set, Cloneable, java.io.Serializable {     static final long serialVersionUID = -5024744406713321676L;     private transient HashMap ma

Baple的专栏 1499

泰凌微8258入门教程——导读

基于泰凌微TLSR8258 Bluetooth® SIG Mesh 的入门系列教程

2万+

HashSet和HashMap关系

         HashSet其实内部就是靠的HashMap实现的,只是没有用HashMap的value那一部分,   只是用了key那一部分,因为key是不能重复的.

peng_0129的博客 863

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

关于hashset和hashmap,还有treeset和treemap,四个的关系

集合类底层实现虚拟Value对象本质HashSet​HashMap​只使用HashMap的Key部分TreeSet​TreeMap​同上只使用TreeMap的Key部分是的,HashSet基于HashMap实现,TreeSet基于TreeMap实现,Set元素就是Map的Key,用一个固定的虚拟对象作为Value。

sheshibenniaodan的博客 880

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Hashset、Hashmap、Hashtable与hashcode()和equals()的密切关系

Hashset是继承Set接口,Set接口又实现Collection接口,这是层次关系。那么Hashset、Hashmap、Hashtable中的存储操作是根据什么原理来存取对象的呢?         下面以HashSet为例进行分析,我们都知道:在hashset中不允许出现重复对象,元素的位置也是不确定的。在hashset中又是怎样判定元素是否重复的呢?在java的集合中,判断两个对象是否

wzhjdls的专栏 726

1.HashMap_1:什么是HashMap???HashMap有什么特点???HashSet和hashMap之间的关系是什么???HashMap常用方法有八些???

跟汤老师学Java笔记:HashMap 完成:第一遍 1.什么是HashMap? HashMap是一种基于哈希算法的Map集合,以哈希表形式存储 2.HashMap有什么特点? 数据结构:哈希表 特点:查找元素时效率高 3.HashSet和hashMap之间的关系是什么? HashSet的源码可以看出,创建HashSet实际创建了一个HashMap,当hashSet的add()添加元素时实际是hashMap.put(e,PRESENT),把hashSet要添加的元素作为hashMap集合里的key存储,而h

ADbyCool的博客 454

HashSet、Hashtable与HashMap的关系

HashSet Hashtable HashMap的关系

qfycc92的专栏 785

HashMap和HashSet

HashMap和HashSet将一个Set集合扩展成了Map集合,由于这个Set采用了HashSet作为实现类,HashSet会使用Hash算法来保存集合中每个SimpleEntry元素,因此扩展出来的Map本质上是一个HashMap。 实际上,HashSet和HashMap之间有很多相似之处。Set和Map的关系在看Set和Map之间的关系之前,先来看看Set集合的继承体系,如图3.1所示。

Daily one note for Java 413

Java关于HashSet与HashMap的区别

HashSet与HashMap 这两个存在很大的渊源。 区别1: 很明显, HashMap实现的是Map接口,而HashSet实现的是Set接。 区别2: HashMap理论上来说查询速度比HashSet快那么些些。 事实上网上很多文字都是不完整或者有问题的,比如: HashMap添加值是调用put()向map中添加元素。 HashSet是调用add把对象添加到 set集合。 HashMap 是存...

lambert_Lei的专栏 606
上一篇: hibernate与mybatis对比
下一篇: java知识总结
寂寞灵魂
博客等级 码龄15年 111粉丝 284原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值