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

333333333333

一、Map 接口

        接下来讲的都是基于 jdk8 来开展的。

1.1 特点

        1、Map Collection 并列存在。Map 是用于保存具有映射关系的数据,即 key-value

        2、Map 中的 key value 可以是任何引用类型的数据类型。

        3、Map 中的 key 不允许重复,原因和 HashSet 一样。

        4、Map 中的 value 是可以重复的。

        5、Map 中的 key 可以为 nullvalue 也可以为 null,注意 key null 时只能有一个,value null 时可以有多个。

        6、常用 String 类作为 Map key

        7、key value 之间存在单向一对一关系,即通过指定的 key 总能找到对于的 value

        8、Map 存放数据的 key-value 示意图,一对 key-value 是放在一个 Node 中的,又因为 Node 实现了 Entry 接口,也有人说是一对 key-value 就是一个 Entry

1.2 常用实现类

        HashMapHashTableSortedMap(接口)、TreeMap LinkedHashMapProperties 等。

1.3 常用方法

public class TestMap {public static void main(String[] args) {Map map = new HashMap<>();// put 添加元素map.put("孙悟空","唐僧");map.put("孙悟空","猪八戒");map.put("宋江","潘金莲");map.put("武大郎","西门庆");map.put("曹操",null);map.put(null,"荀彧");// get 根据 key 获取元素Object o = map.get("武大郎");// 根据 key 删除元素map.remove("宋江");// 判断 key 是否存在boolean b = map.containsKey(null);System.out.println(b);// 获取 map 的元素个数System.out.println(map.size());// 判断 map 元素个数是否为 0System.out.println(map.isEmpty());// 清除 mapmap.clear();}
}

1.4 遍历方式

1.4.1 keySet 方式

public static void main(String[] args) {Map map = new HashMap<>();map.put("孙悟空","唐僧");map.put("武大郎","西门庆");// 先取出所有的 key,然后再取出 valueSet keySet = map.keySet();// (1) 使用增强 for 循环for (Object obj :keySet) {System.out.println(obj+"-"+map.get(obj));}System.out.println("-----------------------");// (2) 迭代器Iterator iterator = keySet.iterator();while (iterator.hasNext()) {Object next =  iterator.next();System.out.println(next+"-"+map.get(next));}
}

1.4.2 value 值方式

public static void main(String[] args) {Map map = new HashMap<>();map.put("孙悟空","唐僧");map.put("武大郎","西门庆");// 只能取出所有的 valuesCollection values = map.values();// (1) 增强 for 循环for (Object obj :values) {System.out.println(obj);}System.out.println("-----------------------");//(2)迭代器Iterator iterator1 = values.iterator();while(iterator1.hasNext()){Object next = iterator1.next();System.out.println(next);}
}

1.4.3 EntrySet 方式

public static void main(String[] args) {Map map = new HashMap<>();map.put("孙悟空","唐僧");map.put("武大郎","西门庆");Set set = map.entrySet();// (1) 增强 for 循环for (Object entry :set) {// 将 entry 转换成 Map.EntryMap.Entry m = (Map.Entry)entry;System.out.println(m.getKey()+"-"+m.getValue());}System.out.println("-----------------------");// (2) 迭代器Iterator iterator2 = set.iterator();while (iterator2.hasNext()) {Map.Entry m=  (Map.Entry) iterator2.next();System.out.println(m.getKey()+"-"+m.getValue());}
}

1.5 习题练习

        使用 HashMap 添加 3 个员工对象,要求:键为员工 id,值为员工对象。并遍历显示工资 > 18000 员工(遍历方式最少两种)。员工类:姓名、工资、员工 id

class Employee{private String id;private String name;private double salary;public Employee(String id, String name, double salary) {this.id = id;this.name = name;this.salary = salary;}// setter、getter、toString@Overridepublic String toString() {return "Employee{" +"id='" + id + '\'' +", name='" + name + '\'' +", salary=" + salary +'}';}
}
public static void main(String[] args) {Map map = new HashMap();Employee e1 = new Employee("1","张三",20000);Employee e2 = new Employee("2","李四",8000);Employee e3 = new Employee("3","王五",60000);map.put(e1.getId(),e1);map.put(e2.getId(),e2);map.put(e3.getId(),e3);Set set = map.keySet();for (Object key :set) {Employee employee = (Employee)map.get(key);if(employee.getSalary()>18000){System.out.println(key+"-"+employee);}}System.out.println("--------------");Iterator iterator = set.iterator();while (iterator.hasNext()) {Object key =  iterator.next();Employee employee = (Employee)map.get(key);if(employee.getSalary()>18000){System.out.println(key+"-"+employee);}}System.out.println("--------------");Set set1 = map.entrySet();for (Object entrySet :set1) {Map.Entry entry =  (Map.Entry)entrySet;Employee employee = (Employee) entry.getValue();if(employee.getSalary()>18000){System.out.println(entry.getKey()+"-"+employee);}}
}

相关文章:

333333333333

一、Map 接口 接下来讲的都是基于 jdk8 来开展的。 1.1 特点 1、Map 与 Collection 并列存在。Map 是用于保存具有映射关系的数据&#xff0c;即 key-value。 2、Map 中的 key 和 value 可以是任何引用类型的数据类型。 3、Map 中的 key 不允许重复&#xff0c;原因和 HashSet…...

Python:字符串格式化

文章目录 %用法使用format方法进行格式化 %用法 格式字符说明%s字符串%c单个字符%d十进制整数%o八进制整数%x十六进制整数%e指数(基底写为e)%E指数(基底写为E) x 1235 print(%o % x) print(%d % x) print(%x % x) print(%e % x) print(%s % 65) print(%c % a)使用format方法…...

虹科示波器 | 汽车免拆检修 | 2010款江铃陆风X8车发动机怠速抖动、加速无力

一、故障现象 一辆2010款江铃陆风X8车&#xff0c;搭载4G6GS4N发动机&#xff0c;累计行驶里程约为20万km。该车在其他修理厂进行发动机大修&#xff0c;维修后试车&#xff0c;发动机怠速抖动、加速无力。用故障检测仪检测&#xff0c;发动机控制模块&#xff08;ECM&#xff…...

左和右,激进与保守,都是相对概念,但是都会滑向同一种

...

js中的遍历

1. 最原始的可以使用 for(let i0;i<....) 可以用来遍历数组和对象 2. for ... in 用来遍历对象的index 3. for ... of 用来遍历数组 4. 数组内置的forEach,map也可以遍历数组 forEach和for ..of 类似,但是forEach不支持break,continue等流程控制语句,而且forEach中不支持…...

Python算法——快速排序

快速排序&#xff08;Quick Sort&#xff09;是一种高效的分治排序算法&#xff0c;它选择一个基准元素&#xff0c;将数组分成两个子数组&#xff0c;小于基准的放在左边&#xff0c;大于基准的放在右边&#xff0c;然后递归地排序子数组。快速排序通常比冒泡排序和选择排序更…...

操作系统备考学习 day12 (第五章)

操作系统备考学习 day12 第五章 &#xff08;输入/输出&#xff09;I/O管理5.1 I/O管理概述5.1.1 I/O设备I/O设备的分类 5.1.2 I/O控制器I/O设备的电子部件 5.1.3 I/O控制方式程序直接控制方式中断驱动方式DMA方式DMA控制器通道控制方式 5.1.4 I/O软件层次结构用户层软件设备独…...

Elasticsearch删除映射类型

一 前言 官方解释:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/removal-of-types.html 在elasticsearch6.0.0或更高的版本中创建索引仅能包含单个映射类型。在具有多种映射类型的5.x版本中创建的索引将继续像以前一样在elasticsearch6.x中运行。类型将在e…...

网络工程师进阶课:华为HCIP认证课程介绍

微思网络HCIP VIP试听课程&#xff1a;DHCP协议原理与配置https://www.bilibili.com/video/BV1cy4y1J7yg/?spm_id_from333.999.0.0 【赠送】IT技术视频教程&#xff0c;白拿不谢&#xff01;思科、华为、红帽、数据库、云计算等等 https://xmws-it.blog.csdn.net/article/det…...

单行自动横向滚动——css实现

效果 封装组件 <template><div ref"container" class"scroll-area"><divref"content":class"[isScroll ? scroll : no-scroll]":style"{ color: fontColor }">{{ content }}</div></div> &…...

多线程基础

1. 线程创建的几种方式 2. 锁的类型 在学习JUC之前&#xff0c;加锁、等待、唤醒 分别使用的是 &#xff08;synchronized、lock&#xff09;、wait、notify在学习JUC开始&#xff0c;学会使用lock接口的其他实现类来进行上述操作&#xff0c;比如 ReentrantLock 3. 线程池 …...

贝锐向日葵亮相阿里云“云栖大会”:独创专利算法赋能全新云桌面

2023年10月31日-11月2日&#xff0c;一年一度的云栖大会如期举办&#xff0c;国产远程连接服务创领者贝锐受邀参与。活动现场&#xff0c;贝锐CTO张小峰进行了分享&#xff0c;宣布贝锐旗下国民级远程控制品牌“贝锐向日葵”与无影展开合作&#xff0c;同时全新的“云桌面”将于…...

QT在线安装5.15之前的版本(下载速度飞快)

使用最新的QT在线安装器&#xff0c;安装QT版本时只能安装5.15以及之后的版本&#xff0c;安装QT5.15之前的版本只能通过离线安装的方式&#xff0c;离线安装后还要自己去配置QT&#xff0c;离线安装还有个问题的&#xff0c;后续维护比较麻烦&#xff0c;QT的维护工具还要自己…...

零日漏洞预防

零日漏洞&#xff0c;是软件应用程序或操作系统&#xff08;OS&#xff09;中的意外安全漏洞&#xff0c;负责修复该漏洞的一方或供应商不知道该漏洞&#xff0c;它们仍然未被披露和修补&#xff0c;为攻击者留下了漏洞&#xff0c;而公众仍然没有意识到风险。 零日攻击是如何…...

企业内部外网向内网传输文件如何实现高效安全?

随着信息技术的发展&#xff0c;企业内部外网隔离已成为一种常见的网络安全措施&#xff0c;旨在防止外部攻击者入侵内部网络&#xff0c;保护企业的核心数据和业务系统。然而&#xff0c;企业内外网隔离也带来了一些问题&#xff0c;其中之一就是如何实现内外网之间的文件传输…...

C++--二叉搜索树初阶

前言&#xff1a;二叉搜索树是一种常用的数据结构&#xff0c;支持快速的查找、插入、删除操作&#xff0c;C中map和set的特性也是以二叉搜索树作为铺垫来实现的&#xff0c;而二叉搜索树也是一种树形结构&#xff0c;所以&#xff0c;在学习map和set之前&#xff0c;我们先来学…...

Type List(C++ 模板元编程)

定义 类型列表&#xff0c;字面意思就是一个存储类型的列表&#xff0c;例如std::tuple<int, float, double, std::string>就是一个类型列表。 template<typename ...Ts> struct type_list {};基础操作 操作约束&#xff1a;对于所有操作&#xff0c;均要求参数…...

使用老北鼻CharGPT对话查询 Qt/C++ 使用gumbo-parse解析加载的html全过程

记下使用老北鼻CharGPT对话查询 Qt/C解析html网页全过程。 [gumbo-parse] Gumbo是HTML5解析算法作为纯C99库实现&#xff0c;没有外部依赖性。它被设计为其他工具和库的构建模块&#xff0c;比如linters、验证器、模板语言、重构和分析工具。详细说明参考original-README.md 目…...

​ iOS App Store上传项目报错 缺少隐私政策网址(URL)解决方法

一、问题如下图所示&#xff1a; ​ 二、解决办法&#xff1a;使用Google浏览器&#xff08;翻译成中文&#xff09;直接打开该网址 https://www.freeprivacypolicy.com/free-privacy-policy-generator.php 按照要求填写APP信息&#xff0c;最后将生成的网址复制粘贴到隐私…...

设计模式第一课-单例模式(懒汉模式和饿汉模式)

单例模式 个人理解&#xff1a;单例模式实际就是通过类加载的方式获取到一个对象&#xff0c;并且保证这个对象在使用中只有一个&#xff0c;不允许再次被创建 一、懒汉模式 1、懒汉模式的基础写法 代码解释&#xff1a; &#xff08;1&#xff09;、编写LazySingleton类的…...

沉浸式翻译扩展常见问题解决方案

沉浸式翻译扩展常见问题解决方案 【免费下载链接】immersive-translate 沉浸式双语网页翻译扩展 , 支持输入框翻译&#xff0c; 鼠标悬停翻译&#xff0c; PDF, Epub, 字幕文件, TXT 文件翻译 - Immersive Dual Web Page Translation Extension 项目地址: https://gitcode.c…...

企业级低代码平台JeecgBoot快速搭建指南:从环境配置到实战应用

企业级低代码平台JeecgBoot快速搭建指南&#xff1a;从环境配置到实战应用 【免费下载链接】jeecg-boot 一款 AI 驱动的低代码平台&#xff0c;提供"零代码"与"代码生成"双模式——零代码模式一句话搭建系统&#xff0c;代码生成模式自动输出前后端代码与建…...

Phi-4-mini-reasoning企业应用探索:智能客服知识推理模块集成方案

Phi-4-mini-reasoning企业应用探索&#xff1a;智能客服知识推理模块集成方案 1. 轻量级推理模型的价值 在当今企业智能化转型浪潮中&#xff0c;轻量级推理模型正成为技术落地的关键。Phi-4-mini-reasoning作为一款专注于高质量推理的开源模型&#xff0c;凭借其128K令牌的超…...

S2-Pro企业级监控告警集成:与Prometheus和Grafana的实战

S2-Pro企业级监控告警集成&#xff1a;与Prometheus和Grafana的实战 1. 为什么企业级AI服务需要监控告警 AI服务在生产环境运行时&#xff0c;就像一辆24小时行驶的汽车&#xff0c;需要仪表盘来显示各项关键指标。想象一下&#xff0c;如果你开车时看不到油量表、水温计和速…...

FlexASIO:打破专业音频门槛,让普通设备也能拥有专业级ASIO体验

FlexASIO&#xff1a;打破专业音频门槛&#xff0c;让普通设备也能拥有专业级ASIO体验 【免费下载链接】FlexASIO A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME. 项目地址…...

FlexRay帧格式拆解:从Header到Trailer,手把手教你读懂汽车总线的‘数据包’

FlexRay帧格式实战解析&#xff1a;像拆解网络包一样掌握汽车总线通信 在汽车电子系统开发中&#xff0c;理解总线协议就像网络工程师需要精通TCP/IP一样重要。FlexRay作为高性能车载网络的核心协议&#xff0c;其帧格式设计既体现了汽车电子对确定性的严苛要求&#xff0c;又融…...

comsol的单相变压器绕组及铁芯振动形变仿真模型 1、单相变压器组振动形变模型:绕组在漏磁场...

comsol的单相变压器绕组及铁芯振动形变仿真模型 1、单相变压器组振动形变模型:绕组在漏磁场的洛伦兹力作用下振动&#xff0c;在长期作用下发生位移形变 2、单相变压器铁芯振动形变模型:铁芯在磁致伸缩作用下发生振动形变 注:时域仿真可以设置观察点&#xff0c;导出随时间变化…...

让你的调试日志五彩斑斓:J-Link RTT高级封装技巧(支持中文、浮点数、十六进制)

让你的调试日志五彩斑斓&#xff1a;J-Link RTT高级封装技巧&#xff08;支持中文、浮点数、十六进制&#xff09; 调试是嵌入式开发中不可或缺的一环&#xff0c;而高效的调试工具能显著提升开发效率。J-Link RTT&#xff08;Real Time Transfer&#xff09;作为一种无需额外硬…...

UDS诊断服务-10例程控制服务(0x31)实战:从协议解析到车辆传感器校准

1. 从车辆抖动问题认识0x31服务的重要性 去年夏天&#xff0c;我遇到一辆行驶里程8万公里的SUV&#xff0c;车主反映急加速时发动机抖动明显。用诊断仪读取故障码显示"P0172 - 燃油修正系统过浓"&#xff0c;但更换氧传感器和火花塞后问题依旧。这时候就需要请出我们…...

终极揭秘:4步掌握Unity视觉还原技术核心

终极揭秘&#xff1a;4步掌握Unity视觉还原技术核心 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnityDemosaics Universa…...