Map集合5种遍历方式

1、 方法

package com.csdn;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapDemo {public static void main(String[] args) {//1、添加元素:无序,不重复,无索引Map<String, Integer> maps = new HashMap<>();maps.put("张三丰", 80);maps.put("张翠山", 40);maps.put("张无忌", 20);maps.put("赵敏", 18);System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}//2、清空集合maps.clear();System.out.println(maps);//{}//3、判断集合是否为空,为空返回true,反之!System.out.println(maps.isEmpty());//true//4、根据键获取对应值:public V get(Object key)System.out.println(maps.get("张三丰"));//null//5、根据键删除整个元素。(删除键会返回键的值)System.out.println(maps.remove("张三丰"));//null//6、判断是否包含某个键,包含返回true,反之System.out.println(maps.containsKey("张三丰"));//false//7、判断是否包含某个值System.out.println(maps.containsValue(80));//false//8、获取全部键的集合:public Set<K> keySet()Set<String> keys = maps.keySet();System.out.println(keys);//[]//9、获取全部值的集合:Collection(V) values();Collection<Integer> values = maps.values();System.out.println(values);//[]//10、集合的大小System.out.println(maps.size());//0//11、合并其他Map集合。(拓展)Map<String, String> map1 = new HashMap<>();map1.put("灰太狼", "抓羊");map1.put("红太狼", "奖励灰太狼");Map<String, String> map2 = new HashMap<>();map2.put("灰太狼", "不抓羊");map2.put("红太狼", "打灰太狼");map2.put("小灰灰", "放羊");map1.putAll(map2);System.out.println(map1);//{红太狼=打灰太狼, 灰太狼=不抓羊, 小灰灰=放羊}System.out.println(map2);//{红太狼=打灰太狼, 灰太狼=不抓羊, 小灰灰=放羊}}
}

2、Map集合的遍历方式

2.1、键找值

package com.csdn;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEach {public static void main(String[] args) {//1、添加元素:无序,不重复,无索引Map<String, Integer> maps = new HashMap<>();maps.put("张三丰", 80);maps.put("张翠山", 40);maps.put("张无忌", 20);maps.put("赵敏", 18);System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}//1、键找值:第一步:先拿到集合的全部键Set<String> keys = maps.keySet();//2、第二步:遍历每个键,根据键提取值for (String key : keys) {Integer value = maps.get(key);System.out.println(key + "===>" + value);//张翠山===>40//张三丰===>80//赵敏===>18//张无忌===>20}}
}

2.2、键值对

package com.csdn;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEach {public static void main(String[] args) {//1、添加元素:无序,不重复,无索引Map<String, Integer> maps = new HashMap<>();maps.put("张三丰", 80);maps.put("张翠山", 40);maps.put("张无忌", 20);maps.put("赵敏", 18);System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}//1、把Map集合转化成Set集合Set<Map.Entry<String, Integer>> entries = maps.entrySet();//2、开始遍历for (Map.Entry<String, Integer> entry : entries) {String key = entry.getKey();Integer value = entry.getValue();System.out.println(key+"===>"+value);//张翠山===>40//张三丰===>80//赵敏===>18//张无忌===>20}}
}

2.3、Lambda表达式遍历

package com.csdn;
import java.util.HashMap;
import java.util.Map;
public class MapEach {public static void main(String[] args) {//1、添加元素:无序,不重复,无索引Map<String, Integer> maps = new HashMap<>();maps.put("张三丰", 80);maps.put("张翠山", 40);maps.put("张无忌", 20);maps.put("赵敏", 18);System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}
/*maps.forEach(new BiConsumer<String, Integer>() {@Overridepublic void accept(String s, Integer integer) {System.out.println(s + "===>" + integer);}});
*/maps.forEach((key, value) -> System.out.println(key + "===>" + value));//张翠山===>40//张三丰===>80//赵敏===>18//张无忌===>20}
}

2.4、方法引用遍历

package com.csdn;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEach {public static void main(String[] args) {//1、添加元素:无序,不重复,无索引Map<String, Integer> maps = new HashMap<>();maps.put("张三丰", 80);maps.put("张翠山", 40);maps.put("张无忌", 20);maps.put("赵敏", 18);System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}Set<Map.Entry<String, Integer>> entries = maps.entrySet();entries.forEach(System.out::println);//张翠山=40//张三丰=80//赵敏=18//张无忌=20}
}

 2.5、stream流遍历方式

package com.csdn;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEach {public static void main(String[] args) {//1、添加元素:无序,不重复,无索引Map<String, Integer> maps = new HashMap<>();maps.put("张三丰", 80);maps.put("张翠山", 40);maps.put("张无忌", 20);maps.put("赵敏", 18);System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}Set<Map.Entry<String, Integer>> entries = maps.entrySet();entries.stream().forEach(System.out::println);//张翠山=40//张三丰=80//赵敏=18//张无忌=20}
}

Map集合的应用有很多,以下是一些常见的应用场景:

  1. 统计词频:将文本中出现的单词作为Key,出现次数作为Value存储在Map集合中,可以方便地统计每个单词在文本中出现的次数。

  2. 存储配置信息:将配置文件中的配置项和对应的配置值存储在Map集合中,可以方便地读取和修改配置信息。

  3. 缓存数据:将经常使用的数据存储在Map集合中,可以提高程序的运行效率,避免频繁访问数据库或文件系统。

  4. 保存用户信息:将用户ID作为Key,用户信息作为Value存储在Map集合中,可以实现对用户信息的快速访问和修改。

  5. 实现图结构:使用Map集合可以方便地实现图结构,其中Key表示图中的节点,Value表示与该节点相邻的节点和边的属性。

  6. 实现缓存一致性:在分布式系统中,使用Map集合可以方便地实现缓存一致性,其中不同节点上的Map集合存储相同的缓存数据,通过协调不同节点上的更新操作可以保证缓存数据的一致性。

Map集合的应用有以下几个方面:

  1. 存储键值对:Map集合可以存储键值对,其中键和值都可以是任意数据类型,键值对之间是一一对应的关系。可以通过遍历Map集合,获取键值对的值,实现对数据的访问和操作。

  2. 数据去重:Map集合的键具有唯一性,因此可以利用这个特点进行数据去重操作。例如,在处理用户提交的表单数据时,可以使用Map集合来存储用户提交的数据,然后根据键值对的唯一性,进行去重操作。

  3. 统计数据:Map集合可以存储不同的数据值,并统计每个数据值出现的次数。例如,在统计某个文本中每个单词出现的次数时,可以使用Map集合来存储每个单词出现的次数。

  4. 缓存数据:Map集合可以用来缓存数据,提高数据访问的效率。例如,在Web开发中,可以使用Map集合来缓存一些经常使用的数据,减少对数据库的访问次数,提高系统的性能。

  5. 实现自定义数据类型的映射:Map集合中的键和值可以是任意对象,因此可以通过Map集合来实现自定义数据类型的映射。例如,在处理图形界面中的控件时,可以使用Map集合来实现控件的名称和控件对象之间的映射关系。

Map集合是一种键值对(key-value)的数据结构,常用于存储和操作一些映射关系。下面是一些Map集合的应用:

  1. 数据库操作:将表中的数据以Map集合的形式存放,便于进行查询、更新等操作。

  2. 缓存管理:常见的缓存管理工具如Redis等都使用Map集合来存储缓存数据,方便进行查询和删除。

  3. 配置文件读取:将配置文件中的键值对转换为Map集合,方便读取和使用。

  4. 数据统计与分析:将数据按照不同的维度进行分类,以Map集合的形式存储,方便进行统计和分析。

  5. 索引管理:在搜索引擎等场景中,Map集合可以用来存储关键词和对应的文档ID,以便快速检索。

  6. Web应用开发:常见的Web框架如Spring、Struts2等都会使用Map集合来存储请求参数、Session数据等。

  7. 图像处理:在一些图像处理工具中,Map集合可以用来存储像素点的坐标和颜色等信息。

Map集合的应用包括:

  1. 存储数据:Map集合可以用来存储大量的数据,可以用于缓存数据、存储配置信息等。

  2. 统计数据:Map集合可以用来统计数据,例如在某个地区统计人口数、统计某个商品的销售量等。

  3. 分类数据:Map集合可以用来分类数据,例如将学生按照班级、年级进行分类。

  4. 查找数据:Map集合可以用来查找数据,例如在一个学生集合中查找某个学生的信息。

  5. 记录数据:Map集合可以用来记录数据,例如记录一个学生的出勤情况、记录某个用户的登录情况等。

  6. 维护关系:Map集合可以用来维护关系,例如维护一个每个员工的上级关系、维护客户和订单之间的关系等。

  7. 唯一性处理:Map集合可以用来处理数据的唯一性,例如在一个用户注册系统中,可以使用Map集合来判断用户名是否已经被注册。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/139468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA -----Java Management Extensions (JMX) 详解1

一、通过Jconsole本地访问 在j2se6之前&#xff0c;需要在应用启动的时候&#xff0c;加上com.sun.management.jmxremote参数&#xff0c;该参数默认值为true&#xff0c;实例如下&#xff1a; java -Dcom.sun.management.jmxremotetrue ,如果禁用本地访问java -Dcom.sun.mana…

如何提升管理组织能力?

组织能力能力属于管理能力中的一部分&#xff0c;所以也称之为管理组织能力&#xff0c;组织是将人和事物的组合&#xff0c;有效的梳理和导向结果的能力。每个人都有组织能力&#xff0c;只是能力和效率上存在较大的差异。 一人的组织能力从学生时代就能体现出来&#xff0c;…

Unbuntu安装、测试和卸载gcc11

GCC 可用于编译 C、C&#xff0c;本文介绍如何 Ubuntu 上安装 gcc11、测试和卸载它。 1. 在Ubuntu 上安装 gcc11 添加工具链存储库 sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test在 Ubuntu 上安装 gcc11 sudo apt install -y gcc-11验证 gcc11 版本 gcc-11 --v…

本地浏览器全局翻译 demo 以火狐firefox为例【免费-简单】

translateDemo 介绍使用说明简单到流泪 本地浏览器全局翻译 demo 以火狐firefox为例 1、安装插件 使用少量的 JavaScript 脚本&#xff0c;自由定义网页显示与运行方式。2、将上述脚本 追加到 插件中即可实现全局翻译&#xff1b;3、免费&#xff1b;参与贡献特技 translateDe…

尼得科电机的强大性能,将列车门和屏蔽门的开合变得从容而安全

城市脉动&#xff0c;人流涌动。 无论城市轨道交通还是远途铁路运输&#xff0c; 尼得科电机的强大性能&#xff0c;将列车门和屏蔽门的开合变得从容而安全。 尼得科的电机方案&#xff0c;有助于列车门稳准开闭&#xff0c;保障乘客安全无忧。高效驱动&#xff0c;让乘客的行程…

Fabric: 使用InvokeChaincode实现跨通道数据访问

因为工作中遇到一些问题考虑使用Fabric的跨通道链码调用方法InvokeChaincode()来解决&#xff0c;这篇文章主要是记录以下在Fabric测试网络中InvokeChaincode()的使用过程及遇到的问题。 1 前期准备 1.1 认识InvokeChaincode InvokeChaincode的作用是调用指定的链码。而被调用…

Oracle(15)Managing Users

目录 一、基础知识 1、Users and Security 用户和安全 2、Database Schema 3、Checklist for Creating Users创建用户步骤 二、基础操作 1、创建一个用户 2、OS Authentication 操作系统身份验证 3、Dropping a User 删除用户 4、Getting User Information 获取用户信…

Leetcode100120. 找出强数对的最大异或值 I

Every day a Leetcode 题目来源&#xff1a;100120. 找出强数对的最大异或值 I 解法1&#xff1a;模拟 枚举 2 遍数组 nums 的元素&#xff0c;更新最大异或值。 代码&#xff1a; /** lc appleetcode.cn id100120 langcpp** [100120] 找出强数对的最大异或值 I*/// lc c…

Leetcode—765.情侣牵手【困难】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—765.情侣牵手 并查集置换环思路 参考自ylb 实现代码 class Solution { public:int minSwapsCouples(vector<int>& row) {int n row.size();int len n / 2;vector<int> p(len);iota(p.begin(), p.…

C语言--从键盘输入当月利润I,求应发奖金总数。

题目描述&#xff1a; 企业发放的奖金根据利润提成。利润I低于或等于100000元的&#xff0c;奖金可提成10%; 利润高于100000 元&#xff0c;低于200000元(1000001000000时&#xff0c;超过1000000元的部分按 1%提成。从键盘输入当月利润I,求应发奖金总数。 int main() {int m…

提升ChatGPT答案质量和准确性的方法Prompt专家

文章目录 1、提供示例2、分步推理3、表格格式4、prompt转换器5、批判性提示6、比较提示7、逆向提示生成器心得分享1、提供示例 当你想模仿 某个事物的时候,比如:文案/风格/语气/语法的时候,模仿李白、马云、马斯克 当你想复制 一种难以明确描述,抽象形式的时候; 我们为cha…

前端面试题 计算机网络

文章目录 ios 7层协议tcp协议和udp协议的区别tcp协议如何确保数据的可靠http和tcp的关系url输入地址到呈现网页有哪些步骤post和get本质区别&#xff0c;什么时候会触发二次预检GET请求&#xff1a;POST请求&#xff1a;触发二次预检&#xff08;CORS中的预检请求&#xff09;&…

Nacos 2.1.1 正式发布!堪称最强!

最近Nacso 2.1.1 正式发布了&#xff01; 新特性 该版本的核心解决方案 Nacos 2.0 包括使用公开发布的稳定性问题&#xff08;默认实现、Grpc 请求和发行版的一致性性能等&#xff09;&#xff0c;另外 Beta 测试插件“测试两个注册 协议服务”和“服务跟踪 ”个新功能。 注…

通过顶顶通呼叫中心中间件玩转FreeSWITCH媒体流

怎么获取FreeSWITCH的媒体流是一个老生常谈的问题了&#xff0c;最常见的方法media_bug,我在2019年就做的FreeSWITCH对接ASR开源的例子https://gitcode.net/iyaosan/FreeSWITCH-ASR用的就是media_bug&#xff0c;对接ASR常见的方法还有通过mod_mrcp模块对接mrcp的asrserver。 …

Mysql联合查询

Mysql联合查询 T1表结构&#xff08;用户名,密码&#xff09; useridusernamepassword1jackpwd12owenpwd2 T2表结构&#xff08;用户名,密码&#xff09; useridjifendengji12033506 第一&#xff1a;内联&#xff08;inner join&#xff09; 如果想把用户信息、积分、等…

c++ 信奥编程 1135:配对碱基链

#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main(){char a[256];int len;int i;gets(a);lenstrlen(a);//计算字符串长度for(i0; i<len; i){ //输出配对碱基if(a[i]A) cout<<"T";if(a[i]T) cout<…

you-get - 使用代码下载视频

文章目录 关于 you-get代码调用报错处理 源码简单分析 关于 you-get github : https://github.com/soimort/you-get you-get 是一个有名的开源视频下载工具包&#xff0c;这里不赘述。 代码调用 you-get 提供了命令行的方式下载视频&#xff0c;这里介绍使用 Python 调用源代…

yolo系列报错(持续补充ing)

文章目录 export GIT_PYTHON_REFRESHquiet解决 没有pt权重文件解决 python文件路径报错解决 读取文件列名报错解决 导入不同文件夹出错解决 megengine没有安装解决然后你发现它竟然还没有用 export GIT_PYTHON_REFRESHquiet 设置环境变量 GIT_PYTHON_REFRESH &#xff0c;这个…

【Proteus仿真】【STM32单片机】多路温度控制系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用按键、LED、蜂鸣器、LCD1602、DS18B20温度传感器、HC05蓝牙模块等。 主要功能&#xff1a; 系统运行后&#xff0c;默认LCD1602显示前4路采集的…

python poetry的教程

Poetry Python世界中&#xff0c;Poetry是一个近年来备受瞩目的工具&#xff0c;它为开发者提供了一个灵活且强大的依赖管理解决方案。Poetry可以帮助开发者管理项目的依赖关系&#xff0c;同时提供了一系列的工具和功能&#xff0c;使开发者能够更轻松地创建和管理复杂的项目。…