HashMap和HashSet-程序员宅基地

技术标签: java  数据结构  

目录

1、模型

2、常用方法

(1) HashMap

(2)HashSet

3、HashMap和HashSet最大的区别


1、模型

我们一般把搜索的数据称为关键字(key),和关键字对应的称为值(value):

(1) 纯key模型:

比如,快速查找某个人的名字是否存在于通讯录中,这个人的名字就是关键字key.

(2) key-value模型:

比如,统计一段话中,每种标点符号出现了多少次,其中,每个标点符号就是关键字key,它所出现的次数就是对应的值value.

HashMap就是key-value模型。

HashSet中只存储了key。

2、常用方法

(1) HashMap

关于Map.Entry<K,V>的说明:

查看Map接口的原码可以发现,Entry是其内部的一个接口,

 HashMap既然实现了Map接口,那它也必然实现了Entry接口,

可以看到,在HashMap的内部类Node中实现了Entry接口,该内部类主要提供了key,value的获取以及设置value的方法,但是并没有设置key的方法.

注意:

(1) HashMap中存放键值对的key是唯一的,value是可以重复的.

(2) HashMap中的key可以全部分离出来,存储到Set中来访问(因为key不能重复),即keySet()方法.

(HashMap中的key并没有进行排序,上图代码中打印的结果是所有的key在哈希表中存放的顺序)

(3) HashMap中的value也可以全部分离出来,存储在Collection中(value可能有重复),即 values()方法.

(HashMap中的value也没有进行排序,value的顺序和key的存放顺序有关)

(4) HashMap中的key不能直接修改,如果要修改key,需要把key先删除再重新插入,value可以直接修改.

(5) entrySet()方法的使用:

entrySet()方法就是把HashMap中的每个键值对打包成一个整体,然后放入到一个集合中: 

(2)HashSet

注意:

(1) HashSet中只存储了key,并且key不会重复,使用HashSet可以达到去重的效果。因为HashSet的底层是HashMap:

查看HashSet源码时,可以发现它的每个构造方法都会初始化一个HashMap:

LinkedHashMap是在HashSet的基础上维护了一个双向链表来记录元素的插入顺序,本质上还是个HashMap。

而HashSet底层HashMap的每个value都是一个空的Object类型的对象:

(2) HashSet中的key不能修改,如果要修改,需要先删除再重新插入.

(3) HashMap和HashSet的key和value都可以存放null.

3、HashMap和HashSet最大的区别

二者最大的区别就在于,HashSet是继承自Collection的接口类,Set中只存储key。

HashMap是继承于Map接口,存储的是key-value键值对。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_67683346/article/details/126068054

智能推荐

自适应滤波算法(LMS算法)-程序员宅基地

文章浏览阅读9.7k次,点赞6次,收藏68次。引言 LMS学习算法是由Widrow和Hoff于1960年提出的,该算法也称为Δ\DeltaΔ规则,该算法与感知器网络的学习算法在权值调整上都基于纠错学习规则,但LMS算法那更容易实现,因此得到了广泛应用。   注意:LMS算法只能训练单层网络,但这并不影响其功能,从理论上讲,多层线性网络并不比单层网络强大,它们具有同样的能力,即对于每一个多层线性网络,都具有一个等效的单层..._lms算法

【文末福利】为什么我们要掌握Linux系统编程?_学习了linux系统编程可以结合什么用-程序员宅基地

文章浏览阅读9.1k次,点赞9次,收藏14次。作为一个嵌入式开发者,我觉得基于Linux的系统编程,这个应该是绕不开的话题。本文将围绕,为何要掌握Linux系统编程这个问题,给出一些观点,希望对各位有所帮助。_学习了linux系统编程可以结合什么用

LoRaAN终端OTAA入网方式的详细介绍_join_devnonce_err-程序员宅基地

文章浏览阅读1k次。在之前的文章中向大家介绍了“该如何选择LoRaWAN终端入的网方式”,本文主要介绍了OTAA节点是如何入网的。此文来自微信公众号“小七说LoRa”,内容已获小七老师授权,小七老师是腾讯云在线课程讲师,点击链接https://mp.weixin.qq.com/s/WvGmi81zBMzbAX8OUb-DpA可以观看课程视频。OTAA的全称是Over The Air Activation。它的入网步骤是这样的:节点发出的Join Request请求通过网关转发到服务器,也就是NS;NS会对该请求做一些判断处_join_devnonce_err

0.96寸OLED使用IIC接口和SPI接口arduino连接方式的说明_spi的dc怎么接-程序员宅基地

文章浏览阅读6.4k次,点赞2次,收藏15次。7pin0.96寸 OLED模块支持SPI和 IIC接口;默认是SPI接口;如果想用 IIC接口;操作如下几步骤:1.将模块背面的电阻R3换到R1 位置,此时将模块切换为IIC接口;电阻 R8 可以用0 欧姆电阻或是用焊锡短接电阻两端。2.CS脚接地。3.DC脚的处理:在 IIC 通信中 DC的高低电平是用来选择IIC通信地址的;当 DC接地时 IIC从机地址为:0x..._spi的dc怎么接

Writing Solaris Device Driver: Basic_9、device driver basic-程序员宅基地

文章浏览阅读828次。Device Driver BasicsThis section introduces you to device drivers and their entry points on the Solaris platform.What Is a Device Driver? A device driver is a kernel module that is responsible_9、device driver basic

Spring Boot整合Shiro完成认证,权限管理,MD5+salt加密_shiro整合md5+权限-程序员宅基地

文章浏览阅读786次。Spring Boot整合Shiro完成认证,权限管理,MD5+salt加密整合代码如下Pom.xml后端代码配置文件application.properties前台代码整合代码如下Pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"..._shiro整合md5+权限

随便推点

“开启IT管理新时代”惠普软件客户论坛圆满闭幕-程序员宅基地

文章浏览阅读74次。2012年3月8日,由惠普软件主办的“开启IT管理新时代”客户论坛在北京富力万丽酒店盛大召开,来自政府、金融、电信、制造行业的众多IT主管代表出席了本论坛。本次论坛分设运维管理和应用生命周期管理两个分论坛。现场,参会嘉宾了解到了惠普最新重金投入研发的惠普IT绩效管理解决方案,以及该方案在帮助IT主管更好地实现全面IT运维管理、量化IT衡量指标方面的特点和优势。告别“千人一..._it公司 技术总监 技术论坛闭幕

Android系统属性值设置和使用_property_value_max-程序员宅基地

文章浏览阅读2.8k次。转载:https://blog.csdn.net/qq_30624591/article/details/102679377每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。属性服务在“init”守护进程中运行。每一个客户端想要设置属性时,必须连接属性服务..._property_value_max

SAS学习6(freq过程、tabulate过程、univariate过程、plot过程、chart过程)_sas中vbar什么意思-程序员宅基地

文章浏览阅读1.4k次。SAS学习6(freq过程、tabulate过程、univariate过程、plot过程、chart过程)_sas中vbar什么意思

xxl-job手动触发报错 xxl-rpc remoting error(no protocol: ip/run_xxl-job remoting error(no protocol: 10.200.7.184:9-程序员宅基地

文章浏览阅读1.9k次。今日在xxl-job任务调度中心,指定定时任务执行的机器地址时,报了xxl-rpc remoting error(no protocol: [指定ip]/run), for url : [指定ip]/run 错误。2、最后发现指定机器地址:http://127.0.0.1:9999/就可正常运行定时任务了。但是手动执行任务时却还是报错,根本就没有进入,猜测是地址问题。1、将执行器节点ip改为:http://127.0.0.1:9999。2、状态码 200 表明请求已经成功,服务器已成功处理了请求。_xxl-job remoting error(no protocol: 10.200.7.184:9999/run), for url : 10.200

openGauss企业版安装_opengauss_3.0.5 企业版安装-程序员宅基地

文章浏览阅读8.3k次,点赞40次,收藏44次。目录安装前准备服务器数据库安装包依赖的软件修改操作系统配置配置文件准备预安装安装及验证安装前准备这里要准备三个部分,服务器(OS已安装好)+数据库安装包+依赖的软件。服务器首先找小伙伴申请了华为云服务器安装好了OS,这里使用的是x86_64+openEuler 20.03LTS。你要是没有这么给力的小伙伴就自己亲力亲为吧~ 华为云服务器现在可是很划算呢,安装也很方便。[root@pekphisprb70593 ~]# cat /etc/os-_opengauss_3.0.5 企业版安装

java 从1到30中随机取出7个数_随机七个数-程序员宅基地

文章浏览阅读6.9k次。package com.abcchina;import java.util.ArrayList;import java.util.Collections;import java.util.LinkedList;import java.util.List;public class Suijishu {/*** @param args*/public static void main..._随机七个数

推荐文章

热门文章

相关标签