Map集合体系——遍历,HashMap,TreeMap,LikedHashMap

认识Map集合

Map集合体系特点

方法
代码示例
package com.zz.Map;import java.util.*;public class Test {public static void main(String args[]){Map<String, Integer> map = new HashMap <>();//经典代码,按照键 无序 不重复 无索引map.put("手表", 100);map.put("手表", 134);//后面重复的数据会覆盖前面的数据(键)map.put("手机", 243);System.out.println(map);System.out.println("=====");Map<Integer, String> map1 = new TreeMap <>();//可排序,不重复,无索引map1.put(23, "java");map1.put(400, "cat");map1.put(35, "dog");System.out.println(map1);//2.public int size()获取集合的大小System.out.println(map.size());//3.public void clear()清空集合//map.clear();System.out.println(map);//4.public boolean isEmpty():判断集合是否为空,为空则返回true,反之System.out.println(map.isEmpty());//5.public V get(Object key)根据键获取对应值,不存在该键,则返回nullint v1 = map.get("手表");System.out.println(v1);//6.public V remove(Object key)根据键删除整个元素(删除键会返回键的值)System.out.println(map.remove("手表"));System.out.println(map);//7.public boolean containsKey(Object key)判断是否包含某个键,为真返回true,否则返回falseSystem.out.println(map.containsKey("手机"));//trueSystem.out.println(map.containsKey("手表"));//false//8.public boolean containsValue(Object value):判断是否包含某个值System.out.println(map.containsValue(2));//falseSystem.out.println(map.containsValue(243));//true//9.public Set<K> keySet():获取Map集合的全部键Set<String> keys = map.keySet();System.out.println(keys);//10.public Collection<V> values():获取Map集合的全部值Collection<Integer> values = map.values();System.out.println(values);//11.把其他Map集合的数据全部导入到自己的集合中来(扩展)Map<String, Integer> map2 = new HashMap <>();map2.put("java", 10);map2.put("操作系统", 20);Map<String, Integer> map3 = new HashMap <>();map3.put("数据库", 12);map3.put("计算机组成原理", 89);map2.putAll(map3);//putAll 把map3中的元素全部导入一份到map2集合中System.out.println(map2);System.out.println(map3);}
}
遍历
方式一:键找值
package com.zz.Map.Map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Test2 {public static void main(String args[]){//准备一个Map集合Map<String, Double> map = new HashMap<>();map.put("牛魔王", 187.4);map.put("铁扇公主", 170.4);map.put("孙悟空", 156.7);map.put("唐僧", 179.4);System.out.println(map);//获取所有键Set<String> keys = map.keySet();System.out.println(keys);//根据键获取对应值for(String key : keys){double value = map.get(key);System.out.println(key + "=>" + value);}}
}
方式二:键值对
//2.调用Map集合提供entrySet方法,把Map集合转换成键值对类型的Set集合Set<Map.Entry<String, Double>> entries = map.entrySet();for(Map.Entry<String, Double> entry : entries){String key = entry.getKey();double value = entry.getValue();System.out.println(key + "=>" + value);}
方式三:Lambda(推荐)JDK8才开始有

//方式三Lambda遍历map.forEach((k, v)->{System.out.println(k + "->" + v);});
上面Lambda的原本代码形式
map.forEach(new BiConsumer <String, Double>() {@Overridepublic void accept(String k, Double v) {System.out.println(k + "=>" + v);}});
Map集合案例

Map集合投票统计代码示例
package com.zz.Map.vote;import java.util.*;public class Test {public static void main(String args[]){//1.将80个学生选择的景点数据拿到程序中来List<String> data = new ArrayList <>();String[] selects = {"A", "B", "C", "D"};Random r = new Random();for(int i = 1; i <= 80; i++){//每次模拟一个学生选择一个景点,存入到集合中去int index = r.nextInt(4);//0,1,2,3data.add(selects[index]);}System.out.println(data);//2.开始统计每个景点的投票人数//准备一个Map集合用于统计最终的结果Map<String, Integer> result = new HashMap<>();//3.开始遍历学生选择的景点数据for (String s : data){//判断该Map集合中是否存在该景点if(result.containsKey(s)){//说明这个景点之前统计过,其值+1,存入到Map集合中result.put(s, result.get(s) + 1);}else{//说明这个景点未被统计过,存入(景点=1)result.put(s, 1);}}System.out.println(result);}
}
HashMap

根据键的哈希值计算位置,和值无关


LinkedHashMap集合
将键:值封装成entry对象
TreeMap集合
集合的嵌套
一个集合中嵌套另外一个集合
package com.zz.Map.province;import java.util.*;public class Test {public static void main(String args[]){//1.定义一个Map集合存储全部的省份信息,其对应的城市信息Map<String, List<String>> map = new HashMap<>();List<String> cities1 = new ArrayList <>();Collections.addAll(cities1, "南京市", "苏州市", "扬州市");map.put("江苏省", cities1);List<String> cities2 = new ArrayList <>();Collections.addAll(cities2, "抚州市", "南昌市", "九江市");map.put("江西省", cities2);System.out.println(map);//获取对应省份的城市信息List<String> list = map.get("江西省");for (String city : list) {System.out.println(city);}//获取所有省份对应的城市信息map.forEach((p, c)->{System.out.println(p + "=>" + c);});}
}
相关文章:
Map集合体系——遍历,HashMap,TreeMap,LikedHashMap
认识Map集合 Map集合体系特点 方法 代码示例 package com.zz.Map;import java.util.*;public class Test {public static void main(String args[]){Map<String, Integer> map new HashMap <>();//经典代码,按照键 无序 不重复 无索引map.put("…...
docker mysql主从复制
新建主服务器容器实例3301 mysql 主 3301 docker run -p 3301:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -v /home/mysql/mysql-files:/var/lib/…...
iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践
移动端的自动化测试,最常见的是 Android 自动化测试,我个人觉得 Android 的测试优先级会更高,也更开放,更容易测试;而 iOS 相较于 Android 要安全稳定的多,但也是一个必须测试的方向,这个系列文…...
Redis的事务
在 Redis 中,事务(Transaction)是一组命令的集合,可以作为一个单独的操作来执行,保证这组命令要么全部执行成功,要么全部执行失败,具有原子性。在 Redis 中,事务是通过 MULTI、EXEC、…...
4.2 比多数opencv函数效果更好的二值化(python)
在这里之间写代码: import numpy as np import torch import torch.nn as nn import cv2#1.silu激活函数 class SiLU(nn.Module):staticmethoddef forward(x):return x*torch.sigmoid(x)#2.获得轨道的类 def railway_classes3(img,x1,x2,y1,y2):img2 img[x1:x2, y…...
webpack打包一个文件,做了哪些事情
用webpack打包一个文件,在webpack内部做了哪些事情,用代码详细介绍一下 当你使用 Webpack 打包一个文件时,Webpack 内部会进行一系列操作来实现模块加载、代码转换、依赖分析、模块打包等功能。以下是使用 Webpack 打包一个简单 JavaScript …...
设计模式学习笔记 - 设计原则 - 6.KISS原则和YAGNI原则
前言 今天,将两个设计原则:KISS 原则和 YANGI 原则。其中,KISS 原则比较经典,耳熟能详,但 YANGI 你可能没怎么听过,不过它理解起来也不难。 理解这个两个原则的时候,经常会有一个共同的问题&a…...
【Vue3-vite】动态导入路由
route文件结构 router moduleindex.ts 路由定义 // 需要导入的路由如下: const routes [{path: /manage,name: manage,component: () > import(/views/home/index.vue),children: manageRoutes,}]index.ts实现从module中自动导入 // 动态导入 const routeFil…...
C++——string类
前言:哈喽小伙伴们,从这篇文章开始我们将进行若干个C中的重要的类容器的学习。本篇文章将讲解第一个类容器——string。 目录 一.什么是string类 二.string类常见接口 1.string类对象的常见构造 2.string类对象的容量操作 3. string类对象的访问及遍…...
进制转换md5绕过 [安洵杯 2019]easy_web1
打开题目 在查看url的时候得到了一串类似编码的东西,源码那里也是一堆base64,但是转换成图片就是网页上我们看见的那个表情包 ?imgTXpVek5UTTFNbVUzTURabE5qYz0&cmd 我们可以先试把前面的img那串解码了 解码的时候发现长度不够,那我们…...
.kat6.l6st6r勒索病毒的最新威胁:如何恢复您的数据?
导言: 在当今数字化时代,数据安全变得至关重要。然而,随着网络威胁不断增加,勒索病毒已成为企业和个人面临的严重威胁之一。其中,.kat6.l6st6r勒索病毒是最新的变种之一,它能够加密您的数据文件࿰…...
Day 6.有名信号量(信号灯)、网络的相关概念和发端
有名信号量 1.创建: semget int semget(key_t key, int nsems, int semflg); 功能:创建一组信号量 参数:key:IPC对像的名字 nsems:信号量的数量 semflg:IPC_CREAT 返回值:成功返回信号量ID…...
MySQL 常用优化方式
MySQL 常用优化方式 sql 书写顺序与执行顺序SQL设计优化使用索引避免索引失效分析慢查询合理使用子查询和临时表列相关使用 日常SQL优化场景limit语句隐式类型转换嵌套子查询混合排序查询重写 sql 书写顺序与执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM &…...
算法刷题day22:双指针
目录 引言概念一、牛的学术圈I二、最长连续不重复序列三、数组元素的目标和四、判断子序列五、日志统计六、统计子矩阵 引言 关于这个双指针算法,主要是用来处理枚举子区间的事,时间复杂度从 O ( N 2 ) O(N^2) O(N2) 降为 O ( N ) O(N) O(N) …...
山人求道篇:八、模型的偏差与交易认知
原文引用https://mp.weixin.qq.com/s/xvxatVseHK62U7aUXS1B4g “ CTA策略一波亏完全年,除了交易执行错误导致的以外,这类策略都是多因子策略,一般会用机器学习组合多因子得出一个信号来进行交易。规则型策略几乎不会出现一波做反亏完全年的情况。这是有以下几个原因的: 多…...
MySQL 元数据锁及问题排查(Metadata Locks MDL)
"元数据"是用来描述数据对象定义的,而元数据锁(Metadata Lock MDL)即是加在这些定义上。通常我们认为非锁定一致性读(简单select)是不加锁的,这个是基于表内数据层面,其依然会对表的元…...
JS中的函数
1、函数形参的默认值 JavaScript函数有一个特别的地方,无论在函数定义中声明了多少形参,都可以传入任意数量的参数,也可以在定义函数时添加针对参数数量的处理逻辑,当已定义的形参无对应的传入参数时,为其指定一个默认…...
微信小程序开发常用的布局
在微信小程序开发中,常用的布局主要包括以下几种: Flex 布局:Flex 布局是一种弹性盒子布局,通过设置容器的属性来实现灵活的布局方式。它可以在水平或垂直方向上对子元素进行对齐、排列和分布。Flex 布局非常适用于创建响应式布局…...
Effective C++ 学习笔记 条款10 令operator=返回一个reference to *this
关于赋值,有趣的是你可以把它们写成连锁形式: int x, y, z; x y z 15; // 赋值连锁形式同样有趣的是,赋值采用右结合律,所以上述连锁赋值被解析为: x (y (z 15));这里15先被赋值给z,然后其结果&…...
算法简单试题
一、选择题 01.一个算法应该是( B ). A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C 02.某算法的时间复杂度为O(n),则表示该…...
Cadence实战:从原理图到PCB的完整导入流程解析
1. Cadence设计流程概述 刚接触Cadence的硬件工程师常会遇到一个经典问题:为什么原理图设计得漂漂亮亮,导入PCB时却总出各种幺蛾子?这就像做菜时备好了所有食材,下锅时却发现灶台点不着火。我在带新人时发现,90%的导入…...
Windows下OpenClaw安装全攻略:对接ollama的GLM-4.7-Flash模型
Windows下OpenClaw安装全攻略:对接ollama的GLM-4.7-Flash模型 1. 为什么选择OpenClawGLM-4.7-Flash组合 去年我在尝试自动化办公流程时,发现市面上的RPA工具要么功能臃肿,要么需要复杂的图形化编程。直到遇见OpenClaw这个开源智能体框架&am…...
解锁Joplin无缝笔记体验:3大场景实现全平台知识管理自由
解锁Joplin无缝笔记体验:3大场景实现全平台知识管理自由 【免费下载链接】joplin Joplin 是一款安全笔记记录与待办事项应用,具备跨平台同步功能,支持 Windows、macOS、Linux、Android 和 iOS 平台。 项目地址: https://gitcode.com/GitHub…...
老旧设备AI赋能:开源方案实现群晖NAS人脸识别功能升级
老旧设备AI赋能:开源方案实现群晖NAS人脸识别功能升级 【免费下载链接】Synology_Photos_Face_Patch Synology Photos Facial Recognition Patch 项目地址: https://gitcode.com/gh_mirrors/sy/Synology_Photos_Face_Patch 在数字化时代,NAS设备已…...
RRT*算法进阶:从理论证明到PyTorch工程化调优与前沿探索
1. RRT*算法核心原理与数学证明 RRT*(快速探索随机树星)作为路径规划领域的里程碑算法,其核心价值在于同时满足概率完备性和渐进最优性。我第一次在仓储机器人项目中使用它时,发现传统RRT算法规划的路径总是像醉汉走路一样曲折&am…...
Qwen2.5-7B LoRA微调入门:十分钟快速指南,轻松上手模型定制
Qwen2.5-7B LoRA微调入门:十分钟快速指南,轻松上手模型定制 1. 前言:为什么选择LoRA微调 在当今大模型技术快速发展的背景下,如何高效地对预训练模型进行定制化调整成为开发者面临的关键挑战。LoRA(Low-Rank Adaptat…...
从零开始:使用Deepspeed ZeRO3优化Qwen3-8B微调,解决多卡显存不足问题
从零开始:使用Deepspeed ZeRO3优化Qwen3-8B微调,解决多卡显存不足问题 当你面对一个8B参数规模的大语言模型时,单卡训练往往显得力不从心。显存不足的报错就像一堵高墙,阻挡着许多开发者的探索之路。而多卡并行训练又带来了新的挑…...
Umi-OCR无界面服务化启动指南:将OCR能力无缝集成到自动化工作流
Umi-OCR无界面服务化启动指南:将OCR能力无缝集成到自动化工作流 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode…...
保姆级教程:STM32F103开发第一步,搞定Keil5安装、激活与芯片包(附资源包)
STM32F103开发环境搭建全指南:从Keil5安装到芯片包配置 引言:为什么选择Keil MDK进行STM32开发 对于刚接触STM32微控制器的新手来说,开发环境搭建往往是第一个"拦路虎"。Keil MDK(Microcontroller Development Kit&…...
Android崩溃分析进阶:结合addr2line与IDA Pro精准定位SO文件崩溃点
1. 从崩溃日志到问题定位:为什么SO文件这么难缠? 每次看到Android应用崩溃日志里出现"signal 11 (SIGSEGV)"这种字样,我就知道今晚又要加班了。特别是当崩溃发生在SO文件中时,那种无力感就像在漆黑的房间里找一根掉落的…...


