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 可以为 null,value 也可以为 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 常用实现类
HashMap、HashTable、SortedMap(接口)、TreeMap 、LinkedHashMap、Properties 等。
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 是用于保存具有映射关系的数据,即 key-value。 2、Map 中的 key 和 value 可以是任何引用类型的数据类型。 3、Map 中的 key 不允许重复,原因和 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车,搭载4G6GS4N发动机,累计行驶里程约为20万km。该车在其他修理厂进行发动机大修,维修后试车,发动机怠速抖动、加速无力。用故障检测仪检测,发动机控制模块(ECMÿ…...
js中的遍历
1. 最原始的可以使用 for(let i0;i<....) 可以用来遍历数组和对象 2. for ... in 用来遍历对象的index 3. for ... of 用来遍历数组 4. 数组内置的forEach,map也可以遍历数组 forEach和for ..of 类似,但是forEach不支持break,continue等流程控制语句,而且forEach中不支持…...
Python算法——快速排序
快速排序(Quick Sort)是一种高效的分治排序算法,它选择一个基准元素,将数组分成两个子数组,小于基准的放在左边,大于基准的放在右边,然后递归地排序子数组。快速排序通常比冒泡排序和选择排序更…...

操作系统备考学习 day12 (第五章)
操作系统备考学习 day12 第五章 (输入/输出)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试听课程:DHCP协议原理与配置https://www.bilibili.com/video/BV1cy4y1J7yg/?spm_id_from333.999.0.0 【赠送】IT技术视频教程,白拿不谢!思科、华为、红帽、数据库、云计算等等 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之前,加锁、等待、唤醒 分别使用的是 (synchronized、lock)、wait、notify在学习JUC开始,学会使用lock接口的其他实现类来进行上述操作,比如 ReentrantLock 3. 线程池 …...

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

QT在线安装5.15之前的版本(下载速度飞快)
使用最新的QT在线安装器,安装QT版本时只能安装5.15以及之后的版本,安装QT5.15之前的版本只能通过离线安装的方式,离线安装后还要自己去配置QT,离线安装还有个问题的,后续维护比较麻烦,QT的维护工具还要自己…...

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

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

C++--二叉搜索树初阶
前言:二叉搜索树是一种常用的数据结构,支持快速的查找、插入、删除操作,C中map和set的特性也是以二叉搜索树作为铺垫来实现的,而二叉搜索树也是一种树形结构,所以,在学习map和set之前,我们先来学…...
Type List(C++ 模板元编程)
定义 类型列表,字面意思就是一个存储类型的列表,例如std::tuple<int, float, double, std::string>就是一个类型列表。 template<typename ...Ts> struct type_list {};基础操作 操作约束:对于所有操作,均要求参数…...
使用老北鼻CharGPT对话查询 Qt/C++ 使用gumbo-parse解析加载的html全过程
记下使用老北鼻CharGPT对话查询 Qt/C解析html网页全过程。 [gumbo-parse] Gumbo是HTML5解析算法作为纯C99库实现,没有外部依赖性。它被设计为其他工具和库的构建模块,比如linters、验证器、模板语言、重构和分析工具。详细说明参考original-README.md 目…...

iOS App Store上传项目报错 缺少隐私政策网址(URL)解决方法
一、问题如下图所示: 二、解决办法:使用Google浏览器(翻译成中文)直接打开该网址 https://www.freeprivacypolicy.com/free-privacy-policy-generator.php 按照要求填写APP信息,最后将生成的网址复制粘贴到隐私…...

设计模式第一课-单例模式(懒汉模式和饿汉模式)
单例模式 个人理解:单例模式实际就是通过类加载的方式获取到一个对象,并且保证这个对象在使用中只有一个,不允许再次被创建 一、懒汉模式 1、懒汉模式的基础写法 代码解释: (1)、编写LazySingleton类的…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...