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

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 <>();//经典代码&#xff0c;按照键 无序 不重复 无索引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 自动化测试踩坑(一): 技术方案、环境配置与落地实践

移动端的自动化测试&#xff0c;最常见的是 Android 自动化测试&#xff0c;我个人觉得 Android 的测试优先级会更高&#xff0c;也更开放&#xff0c;更容易测试&#xff1b;而 iOS 相较于 Android 要安全稳定的多&#xff0c;但也是一个必须测试的方向&#xff0c;这个系列文…...

Redis的事务

在 Redis 中&#xff0c;事务&#xff08;Transaction&#xff09;是一组命令的集合&#xff0c;可以作为一个单独的操作来执行&#xff0c;保证这组命令要么全部执行成功&#xff0c;要么全部执行失败&#xff0c;具有原子性。在 Redis 中&#xff0c;事务是通过 MULTI、EXEC、…...

4.2 比多数opencv函数效果更好的二值化(python)

在这里之间写代码&#xff1a; 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打包一个文件&#xff0c;在webpack内部做了哪些事情&#xff0c;用代码详细介绍一下 当你使用 Webpack 打包一个文件时&#xff0c;Webpack 内部会进行一系列操作来实现模块加载、代码转换、依赖分析、模块打包等功能。以下是使用 Webpack 打包一个简单 JavaScript …...

设计模式学习笔记 - 设计原则 - 6.KISS原则和YAGNI原则

前言 今天&#xff0c;将两个设计原则&#xff1a;KISS 原则和 YANGI 原则。其中&#xff0c;KISS 原则比较经典&#xff0c;耳熟能详&#xff0c;但 YANGI 你可能没怎么听过&#xff0c;不过它理解起来也不难。 理解这个两个原则的时候&#xff0c;经常会有一个共同的问题&a…...

【Vue3-vite】动态导入路由

route文件结构 router moduleindex.ts 路由定义 // 需要导入的路由如下&#xff1a; const routes [{path: /manage,name: manage,component: () > import(/views/home/index.vue),children: manageRoutes,}]index.ts实现从module中自动导入 // 动态导入 const routeFil…...

C++——string类

前言&#xff1a;哈喽小伙伴们&#xff0c;从这篇文章开始我们将进行若干个C中的重要的类容器的学习。本篇文章将讲解第一个类容器——string。 目录 一.什么是string类 二.string类常见接口 1.string类对象的常见构造 2.string类对象的容量操作 3. string类对象的访问及遍…...

进制转换md5绕过 [安洵杯 2019]easy_web1

打开题目 在查看url的时候得到了一串类似编码的东西&#xff0c;源码那里也是一堆base64&#xff0c;但是转换成图片就是网页上我们看见的那个表情包 ?imgTXpVek5UTTFNbVUzTURabE5qYz0&cmd 我们可以先试把前面的img那串解码了 解码的时候发现长度不够&#xff0c;那我们…...

.kat6.l6st6r勒索病毒的最新威胁:如何恢复您的数据?

导言&#xff1a; 在当今数字化时代&#xff0c;数据安全变得至关重要。然而&#xff0c;随着网络威胁不断增加&#xff0c;勒索病毒已成为企业和个人面临的严重威胁之一。其中&#xff0c;.kat6.l6st6r勒索病毒是最新的变种之一&#xff0c;它能够加密您的数据文件&#xff0…...

Day 6.有名信号量(信号灯)、网络的相关概念和发端

有名信号量 1.创建&#xff1a; semget int semget(key_t key, int nsems, int semflg); 功能&#xff1a;创建一组信号量 参数&#xff1a;key&#xff1a;IPC对像的名字 nsems&#xff1a;信号量的数量 semflg&#xff1a;IPC_CREAT 返回值&#xff1a;成功返回信号量ID…...

MySQL 常用优化方式

MySQL 常用优化方式 sql 书写顺序与执行顺序SQL设计优化使用索引避免索引失效分析慢查询合理使用子查询和临时表列相关使用 日常SQL优化场景limit语句隐式类型转换嵌套子查询混合排序查询重写 sql 书写顺序与执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM &…...

算法刷题day22:双指针

目录 引言概念一、牛的学术圈I二、最长连续不重复序列三、数组元素的目标和四、判断子序列五、日志统计六、统计子矩阵 引言 关于这个双指针算法&#xff0c;主要是用来处理枚举子区间的事&#xff0c;时间复杂度从 O ( N 2 ) O(N^2) O(N2) 降为 O ( N ) O(N) O(N) &#xf…...

山人求道篇:八、模型的偏差与交易认知

原文引用https://mp.weixin.qq.com/s/xvxatVseHK62U7aUXS1B4g “ CTA策略一波亏完全年,除了交易执行错误导致的以外,这类策略都是多因子策略,一般会用机器学习组合多因子得出一个信号来进行交易。规则型策略几乎不会出现一波做反亏完全年的情况。这是有以下几个原因的: 多…...

MySQL 元数据锁及问题排查(Metadata Locks MDL)

"元数据"是用来描述数据对象定义的&#xff0c;而元数据锁&#xff08;Metadata Lock MDL&#xff09;即是加在这些定义上。通常我们认为非锁定一致性读&#xff08;简单select&#xff09;是不加锁的&#xff0c;这个是基于表内数据层面&#xff0c;其依然会对表的元…...

JS中的函数

1、函数形参的默认值 JavaScript函数有一个特别的地方&#xff0c;无论在函数定义中声明了多少形参&#xff0c;都可以传入任意数量的参数&#xff0c;也可以在定义函数时添加针对参数数量的处理逻辑&#xff0c;当已定义的形参无对应的传入参数时&#xff0c;为其指定一个默认…...

微信小程序开发常用的布局

在微信小程序开发中&#xff0c;常用的布局主要包括以下几种&#xff1a; Flex 布局&#xff1a;Flex 布局是一种弹性盒子布局&#xff0c;通过设置容器的属性来实现灵活的布局方式。它可以在水平或垂直方向上对子元素进行对齐、排列和分布。Flex 布局非常适用于创建响应式布局…...

Effective C++ 学习笔记 条款10 令operator=返回一个reference to *this

关于赋值&#xff0c;有趣的是你可以把它们写成连锁形式&#xff1a; int x, y, z; x y z 15; // 赋值连锁形式同样有趣的是&#xff0c;赋值采用右结合律&#xff0c;所以上述连锁赋值被解析为&#xff1a; x (y (z 15));这里15先被赋值给z&#xff0c;然后其结果&…...

算法简单试题

一、选择题 01.一个算法应该是( B ). A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C 02&#xff0e;某算法的时间复杂度为O(n)&#xff0c;则表示该…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...