当前位置: 首页 > news >正文

JavaSE22-集合2-map

文章目录

  • 一、集合概念
  • 二、map集合
    • 1、Map集合的特点
    • 2、HashMap
      • 2.1 HashMap特点
      • 2.2 创建对象
      • 2.3 常用方法
      • 2.4 遍历
        • 2.4.1 使用entrySet遍历
        • 2.4.2 使用keySet遍历
    • 3、HashMap的key去重原理

一、集合概念

  1. 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说,集合的长度可变会更加灵活方便。
  2. 集合主要有两个顶层接口,Collection和Map。
    在这里插入图片描述

二、map集合

1、Map集合的特点

Map接口是双列集合的顶层接口,下面是Map接口的定义

interface Map<K,V>  K:键的类型;V:值的类型
  1. 存储的数据必须包含key和value。
  2. key和value在Map集合中是一一对应的关系。一个key对应一个value。
  3. key在map集合中是不会重复的。

2、HashMap

2.1 HashMap特点

  1. 底层数据结构是哈希表
  2. 存储元素的顺序和遍历获取出来的顺序可能不一致
  3. key不会重复

2.2 创建对象

HashMap<key的数据类型,value的数据类型> map = new HashMap<>();

    public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();HashMap<String,Integer> map = new HashMap<>();}

2.3 常用方法

  1. V put(K key, V value) //添加元素,如果key不存在就添加,如果key已经存在则是修改对应的value,并且返回修改前的value
  2. V get(Object key) //根据key获取对应的value值返回。如果key不存在就返回null
  3. V remove(Object key) //根据key删除map中对应的键值对。并且把删除的value返回
  4. boolean containsKey(Object key) //判断key是否存在
  5. int size() //集合中键值对的对数
  6. void clear() //清空集合中的所有键值对
  public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();//map.put()//添加元素map.put("name", "三更");map.put("age", "15");String v = map.put("name", "三更草堂");String name = map.get("name");String age = map.get("age");//删除元素String delV = map.remove("age");//判断key是否存在if(map.containsKey("name")){String age111 = map.get("name");//nullSystem.out.println(age111.length());}//sizeint size = map.size();map.clear();}

2.4 遍历

2.4.1 使用entrySet遍历

map集合的entrySet方法可以获取一个Set集合,集合中存放的是Entry对象,一个Entry对象相当于一个键值对。我们可以遍历set集合拿到Entry对象,然后获取出里面的键和值。

    public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("name","三更");map.put("age","15");Set<Map.Entry<String, String>> entries = map.entrySet();//使用迭代器遍历entrySetIterator<Map.Entry<String, String>> it = entries.iterator();while (it.hasNext()){Map.Entry<String, String> entry = it.next();System.out.println(entry.getKey()+"===="+entry.getValue());}}
    public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("name","三更");map.put("age","15");Set<Map.Entry<String, String>> entries = map.entrySet();//使用foreach遍历entrySetfor (Map.Entry<String, String> entry : entries) {System.out.println(entry.getKey()+"===="+entry.getValue());}}

2.4.2 使用keySet遍历

map集合的keySet方法可以获取一个Set集合,集合中存放的是所有的key。我们可以遍历set集合拿到key对象,然后通过key获取对应的value。

    public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("name","三更");map.put("age","15");Set<String> keys = map.keySet();for (String key : keys) {System.out.println(key+"===="+map.get(key));}}

3、HashMap的key去重原理

  1. HashMap在添加元素的时候会判断集合中是否有key和本次存入的key相同。判断的时候主要是通过hashCode方法和equals方法来进行判断的。hashCode相同,并且equals判断也相同就会认为是同一个key。
  2. Alt + insert 重写hashCode方法和equals方法
    在这里插入图片描述

注意:HashSet存储数据其实也是使用了HashMap。所以如果往HashSet中存储自定义对象也要看情况是否需要重写hashCode方法和equals方法。

相关文章:

JavaSE22-集合2-map

文章目录一、集合概念二、map集合1、Map集合的特点2、HashMap2.1 HashMap特点2.2 创建对象2.3 常用方法2.4 遍历2.4.1 使用entrySet遍历2.4.2 使用keySet遍历3、HashMap的key去重原理一、集合概念 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说&#xff0c;集…...

【项目精选】病历管理系统设计与实现(源码+视频)

点击下载源码 企业财务管理系统主要用于电子病历来提高医院各项工作的效率和质量&#xff0c;促进医学科研、教学&#xff1b;减轻各类事务性工作的劳动强度&#xff0c;使他们腾出更多的精力和时间来服务于病人。本系统结构如下&#xff1a; 电子病例系统&#xff1a; 病人登…...

如何用Python把篮球和鸡联系起来

文章目录画个球让球转起来画个球 不管篮球和不和鸡联系起来&#xff0c;都首先得有个球&#xff0c;或者说要有一个球面&#xff0c;用参数方程可以表示为 xrcos⁡ϕcos⁡θyrcos⁡ϕsin⁡θzrsin⁡ϕ\begin{aligned} x & r\cos\phi\cos\theta\\ y & r\cos\phi\sin\th…...

【RocketMQ】消息的刷盘机制

刷盘策略 CommitLog的asyncPutMessage方法中可以看到在写入消息之后&#xff0c;调用了submitFlushRequest方法执行刷盘策略&#xff1a; public class CommitLog {public CompletableFuture<PutMessageResult> asyncPutMessage(final MessageExtBrokerInner msg) {// …...

AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed

&#x1f4a1;Note&#xff1a;本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf&#xff08;issue F&#xff09;整理的。主要是分享AXI3.0和4.0部分。如果内容有问题请大家在评论区中指出&#xff0c;有补充或者疑问也可以发在评论区&#xff0c;互相学习&#x1f64…...

Java知识复习(八)Spring基础

1、什么是Spring框架&#xff1f; Spring &#xff1a;是一款开源的轻量级 Java 开发框架&#xff0c;旨在提高开发人员的开发效率以及系统的可维护性 2、Spring、SpringMVC和SpringBoot的区别 Spring主要指Spring Framework&#xff0c;就是指如上图所示的各项功能模块Spr…...

WuThreat身份安全云-TVD每日漏洞情报-2023-02-27

漏洞名称:OTFCC 缓冲区错误漏洞 漏洞级别:中危 漏洞编号:CVE-2022-35060,CNVD-2023-11996,CNNVD-202209-1527 相关涉及:OTFCC OTFCC 漏洞状态:EXP 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2022-23648 漏洞名称:MuYucms 存在任意代码执行漏洞 漏洞级别:高危…...

上海交大陈海波教授、夏虞斌教授领衔巨作上市:《操作系统:原理与实现》

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…...

dpi数据接入shell脚

原文&#xff1a;dpi数据接入shell脚本_weixin_34416754的博客-CSDN博客 ##############从ftp服务器拿数据文件 #!/bin/bash #获取感知优良率DPI数据 #DCN服务器信息 uSichuan pS988188# ip137.192.5.53 #获取日期&#xff0c;根据日期抓取文件 Tdate -d "3 days ago&…...

Easyrecovery数据恢复软件工作原理及使用介绍教程

Easyrecovery是一款强大的数据恢复软件&#xff0c;它专门解决磁盘数据恢复问题。在计算机世界里&#xff0c;数据丢失经常是一件令人头疼的事情&#xff0c;但是有了Easyrecovery&#xff0c;您可以放心大胆地享受数据备份和恢复的乐趣。EasyRecovery使用Ontrack公司复杂的模式…...

【面试题】社招中级前端笔试面试题总结

大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库typeof null 的结果是什么&#xff0c;为什么&#xff1f;typeof null 的结果是Object。在 JavaScript 第一个版本中&#xff0c;所有值都存储在…...

设备运行状况不能远程手机查看。难道就妥协吗?为何不试试这个办法

一、背景 随着国家经济结构逐步调整&#xff0c;纺织行业自动化、智能化水平逐步提高&#xff0c;业内竞争程度也将加大&#xff1b;整个市场变化快&#xff0c;并呈现出智能化、通用化、网络化、复杂化的新发展趋势。客户订单小批量、个性化、快速交货的特点越来越明显&#…...

重新认识 Java 中的内存映射(mmap)

mmap 基础概念 mmap 是一种内存映射文件的方法&#xff0c;即将一个文件映射到进程的地址空间&#xff0c;实现文件磁盘地址和一段进程虚拟地址的映射。实现这样的映射关系后&#xff0c;进程就可以采用指针的方式读写操作这一段内存&#xff0c;而系统会自动回写脏页到对应的文…...

224. 基本计算器

224. 基本计算器给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。注意:不允许使用任何将字符串作为数学表达式计算的内置函数&#xff0c;比如 eval() 。 示例 1&#xff1a;输入&#xff1a;s "1 1"输出&#xff1a;2示例 2&#…...

微信小程序通过 node 连接 mysql——方法,简要原理,及一些常见问题

前言 博主自己在22年夏天根据课程要求做了一个小程序连接阿里云服务器的案例&#xff0c;在最近又碰到了相应的需求。 原参考文章&#xff1a;微信小程序 Node连接本地MYSQL_微信小程序nodejs连接数据库_JJJenny0607的博客-CSDN博客 ,还请多多支持原作者&#xff01; 第二次…...

uni-app项目搭建和代码托管

文章目录一、项目搭建步骤一、HBuilder X 创建uniapp项目步骤二、开启微信小程序服务端口步骤三、把项目运行到微信小程序步骤四、解决警告二、使用Git管理项目2-1、本地管理2-2、托管到码云一、项目搭建 步骤一、HBuilder X 创建uniapp项目 步骤二、开启微信小程序服务端口 步…...

win10+python3.6+cuda9+pytorch1.1.0安装

为了让torch可以使用显卡GPU加速&#xff0c;需要安装对应版本的cudatoolkit和pytorch。这里我的nvidia显卡驱动是9.1版本&#xff0c;只能安装cudatoolkit9。 一般支持gpu加速的显卡大部分都是英伟达nvidia系列&#xff0c;都自带了nvidia驱动&#xff0c;所以不需要安装nvidi…...

【2023】某python语言程序设计跟学第二周内容

本文说明&#xff1a; 案例内容为北理工python语言程序设计课程&#xff0c;如有不妥请联系&#xff01; 目录蟒蛇绘制案例&#xff1a;执行结果&#xff1a;代码分析&#xff1a;举一反三&#xff1a;绘制一个五角星图案执行结果&#xff1a;turtle库根据案例简单说明&#xf…...

spring源码篇——BeanDefinition的注册

spring-framework 版本&#xff1a;v5.3.19 文章目录注解方式&#xff08;AnnotationConfigApplicationContext&#xff09;AnnotationConfigApplicationContext#registerAnnotatedBeanDefinitionReader#doRegisterBeanBeanDefinitionRegistry#registerBeanDefinitionAnnotatio…...

virtualbox7虚拟机中安装苹果macOS big sur系统详细教程

第1步&#xff0c;在 Windows 10/11 PC 上启用虚拟化。 现在的电脑一般都默认开启虚拟化技术了。 如果你遇到一些报错&#xff0c;比如收到错误消息“无法在虚拟机上打开会话”&#xff0c;可以查看 如果没有遇到问题&#xff0c;可以直接进入到第二步。 第2步&#xff0c;在…...

用spectralayers 简单去一下人声做个伴奏

最近有个同事说有个工作要一个歌的伴奏不会下载问我能不能给下一个。问题是我五音不全&#xff0c;也不咋关注伴奏这方面的事儿&#xff0c;然后巧了&#xff0c;当天晚上就有个网上的大哥在群里聊天的时候说有个去人声比较给力的软件&#xff0c;我马上给要来了。 软件叫啥sp…...

高峰对话|深度探讨「多云与边缘」

2022 年 12 月&#xff0c;分析师 Zeus Kerravala 与 VMware 通信运营商和边缘事业部高级副总裁兼总经理 Sanjay Uppal 进行非常有启发性的谈话&#xff0c;分享了科技行业领导者的见解。 二位主要围绕以下主题进行探讨&#xff1a; &#x1f4cd; 如何定义多云&#xff0c;以…...

开发手册——一、编程规约_2.常量定义

这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】不允许任何魔法值&#xff08;即未经定义的常量&#xff09;直接出现在代码中。 反例&#xff1a;String key "Id#…...

Sandstorm 建设者亮点——2023 年 2 月

隆重推出 Sandstorm 建设者亮点——2023 年 2 月版&#xff0c;这是由最厉害的 Sandstorm 社区制作的独一无二的 NFT 系列。 从突破性的兔子机器人到神奇的蒸汽朋克海盗船&#xff0c;Sandstorm 建设者亮点 NFT 系列展示了一系列独一无二的创作。 19 项新资产将添加至 Sandstor…...

MyBatis快速入门

创建表&#xff08;自行完成&#xff09;创建模块&#xff0c;引入坐标&#xff08;1&#xff09;.进入mybatis官网&#xff1a;MyBatis中文网按步骤进行添加坐标先添加mybatis依赖然后手动添加mysql驱动junit单元测试坐标&#xff1a;logback坐标&#xff1a;用的时候直接复制…...

Mysql的一些提权方式(mysql提权、UDF)

目录 bash命令提权 必要条件 实验 UDF提权 什么是UDF 必要条件 实验 手动测试...

【2023】DevOps、SRE、运维开发面试宝典之Docker相关面试题

文章目录 1、docker的工作原理是什么2、docker的组成包含哪几大部分3、讲一下镜像的分层结构以及为什么要使用镜像的分层结构?4、简单描述一下Dockerfile的整个构建镜像过程?5、Docker的四种网络类型?6、Docker跨宿主机通讯的方式1、docker的工作原理是什么 docker是一个Cl…...

圣杯布局的实现方式

1.什么是圣杯布局&#xff1f; 左右盒子固定&#xff0c;中间盒子自适应 2.实现方式 &#xff08;1&#xff09;flex布局 思路&#xff1a;左右盒子给固定的宽高&#xff0c;中间盒子flex:1 <!DOCTYPE html> <html lang"en"> <head> <met…...

RecastDemo用法

这里写自定义目录标题recastnavigation介绍recastnavigation的内容RecastDemo安装RecastDemo介绍可配置参数合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个…...

IIC总线式驱动开发(mpu6050)(二)

目录 六、I2C总线二级外设驱动开发方法 七、I2C总线二级外设驱动开发之名称匹配 1. i2c_register_board_info 2. i2c_new_device&#xff1a;明确二级外设地址的情况下可用 3. i2c_new_probed_device 八、I2C总线二级外设驱动开发之设备树匹配 六、I2C总线二级外设驱动开…...

唐山cms模板建站/seo专业论坛

1.前言 之前写了一篇实现五角星打分效果的demo。这个demo用来实现打分效果绰绰有余&#xff0c;那么有时候我们在统计评分的时候&#xff0c;就会有半颗星或者1/3颗星星这样的那要如何实现呢&#xff1f;来来来&#xff0c;纯字体 css实现&#xff01; 2.详情 1.下载字体 webFo…...

贵阳网站建设功能/职业培训机构管理系统

Ramp-up Period&#xff08;in seconds&#xff09; 【1】决定多长时间启动所有线程。如果使用10个线程&#xff0c;ramp-up period是100秒&#xff0c;那么JMeter用100秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒&#xff08;100/10&#xff09;启动。Ram…...

免费代码托管平台/武汉seo霸屏

声明&#xff1a;本文整理借鉴金角大王的Python之路,Day2 - Python基础2&#xff0c;仅供本人学习使用&#xff01;&#xff01;&#xff01; 本节内容 列表、元组操作字符串操作字典操作集合操作文件操作字符编码与转码 1. 列表、元组操作 列表是我们最以后最常用的数据类型之…...

巢湖路桥建设集团有限公司网站/seo流量排行榜神器

在今天&#xff0c;读书有时是件“麻烦”事。它需要你付出时间&#xff0c;付出精力&#xff0c;还要付出一份心境。--仅以《大话设计模式》来祭奠那逝去的…… 桥接模式&#xff1a;将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立的变化。一个类存在两个独立变化的…...

wordpress 分类页面/营业推广方案

其实开发过程中常常会遇到判断对象和数组是否为空&#xff1f;下面介绍3种判断对象是否为空 1. 最常见的思路&#xff0c;for...in...遍历属性&#xff0c;为真则为“非空数组”&#xff1b;否则为“空数组” function judgeObj(obj){for(var attr in obj){return console.log…...

网站建设制作视频教程/计算机培训班

金山毒霸-垃圾清理-单文件封装,清洁洁癖的爱好&#xff01; 实话&#xff0c;金山的软件确实不错。展望金山可以在软件行业&#xff0c;做出让世界都使用的。为国人扛起一片天 下载地址&#xff1a; http://pan.baidu.com/s/1dFa7GdV...