Java遍历Map集合的方法
Java中遍历Map集合的常用方式主要有以下几种:
1.使用keySet()方法遍历
遍历Map的key集合,然后通过key获取value。
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key: " + key + ", Value: " + value);
}
优点:简单直观,适用于只需要key的场景。
缺点:如果同时需要key和value,则需要额外的get操作,可能会降低效率。
2.使用entrySet()方法遍历
遍历Map的entrySet,可以同时获取key和value。
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println("Key: " + key + ", Value: " + value);
}
优点:同时获取key和value,效率高。
缺点:相对于只遍历key来说稍微复杂一些。
3.使用Iterator遍历
通过迭代器遍历Map的entrySet或keySet。
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println("Key: " + key + ", Value: " + value);
}
优点:对于需要在遍历过程中删除元素的情况,Iterator提供了remove()方法。
缺点:代码相对复杂,可读性稍差。
4.使用Java 8的forEach遍历
对于Java 8及更高版本,可以使用Lambda表达式和Stream API进行遍历。
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
map.forEach((key, value) -> {
System.out.println("Key: " + key + ", Value: " + value);
});
优点:代码简洁,可读性好,适用于Java 8及更高版本。
缺点:需要Java 8或更高版本支持。
关于性能:
(1)在大多数情况下,使用entrySet()遍历的性能最好,因为它同时提供了key和value,而不需要额外的get操作。
(2)使用keySet()遍历然后调用get()方法通常比使用entrySet()稍慢,因为每次调用get()都会涉及额外的哈希查找。
(3)Iterator和forEach的性能通常与entrySet()相近,但它们的用途和上下文可能有所不同。
注意:性能差异通常只在处理大量数据时才会变得显著。对于小型数据集,选择哪种遍历方式更多取决于代码的可读性和维护性。
5.如何理解遍历Map集合
5.1什么是遍历(Traversal)
遍历是指按照一定的规则,不重复地访问某个集合(如数组、列表、集合、映射等)中的每一个元素的过程。在编程中,遍历是数据处理的基本操作之一,用于读取、检查和操作集合中的元素。
5.2什么是Map集合
在Java中,Map是一个接口,它存储键值对(key-value pair)的集合。每个键在Map中都是唯一的,但可以有多个键映射到相同的值。Map接口提供了许多方法来插入、删除和检索键值对。常见的Map实现类有HashMap、TreeMap、LinkedHashMap等。
Map的主要特性包括:
(1)它不保证映射的顺序,特别是它不保证该顺序恒久不变。
(2)它允许使用null值和null键(但并非所有实现都支持null键和null值)。
(3)它是一个接口,常见的实现有HashMap和TreeMap等。
Map集合可以看作是一个特殊的集合,它存储的是键值对。我们可以通过键来快速找到对应的值。Map集合非常适合用于存储需要快速查找的数据,比如缓存系统、用户信息存储等。
5.3代码示例
下面是一个使用HashMap(Map的一种实现)的示例,展示了如何添加、遍历和检索Map中的元素:
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
// 创建一个HashMap实例
Map<String, Integer> map = new HashMap<>();
// 向Map中添加键值对
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
// 遍历Map的键(keySet)
for (String key : map.keySet()) {
System.out.println("Key: " + key + ", Value: " + map.get(key));
}
// 遍历Map的键值对(entrySet)
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
// 通过键检索值
int value = map.get("two");
System.out.println("Value for 'two': " + value);
// 检查Map中是否包含某个键
boolean containsKey = map.containsKey("one");
System.out.println("Map contains 'one': " + containsKey);
// 删除键值对
map.remove("one");
System.out.println("After removing 'one': " + map);
}
}
运行这段代码,我们可以看到:
(1)使用keySet()方法遍历Map的所有键,并使用get(key)方法检索对应的值。
(2)使用entrySet()方法遍历Map的所有键值对,这通常更高效,因为不需要额外地从Map中检索值。
(3)使用get(key)方法通过键检索值。
(4)使用containsKey(key)方法检查Map中是否包含某个键。
(5)使用remove(key)方法删除Map中的键值对。
Java遍历Map集合的方法的更多相关文章
- Java 遍历Map集合的方法
方法一:通过Map.keySet,遍历key和value Map<String, Object> map = new HashMap<>(); for (String key ...
- Java遍历Map集合
Java遍历Map集合简单例子 import java.util.*; public class Main { public static void main(String[] args) { Has ...
- 用来遍历map集合的方法
map集合是以键值对进行存储值的,所以遍历map集合无非就是获取键和值,根据实际需求,进行获取键和值. 1.无非就是通过map.keySet()获取到值,然后根据键获取到值. for(String s ...
- 遍历Map集合的方法
创建一个MAP的栗子: Map<String, Integer> tempMap = new HashMap<String, Integer>(); tempMap.put(& ...
- 遍历Map集合四中方法
public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...
- java 遍历map 方法 集合 五种的方法
package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...
- 遍历Map集合:java.util.Map.Entry、KeySet两种方式
遍历Map集合的两种方式: 1.用KeySet Map.keySet(),返回一个存放所有key的set集合,通过遍历集合,根据key值取出所有的value值. Map<String,Strin ...
- Java遍历Map键、值。获取Map大小的方法
Map读取键值对,Java遍历Map的两种实现方法 第一种方法是根据map的keyset()方法来获取key的set集合,然后遍历map取得value的值 import java.util.HashM ...
- Java之五种遍历Map集合的方式
摘要:在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历. 在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历.这篇文章主要给大家介 ...
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合
package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...
随机推荐
- Linux之openssl实现私有CA
一.简介 Centos7.9通过openssl工具构建一个私有的CA,用于颁发证书. 验证私有CA为httpd应用签署证书 二.构建私有CA 1.编辑CA的配置文件 [root@HLWHOST tls ...
- k8s 深入篇———— pod 实战[六]
前言 pod 实战一下,主要是一些例子. 正文 例子一 pod 实例的选择: NodeSelector:是一个供用户将 Pod 与 Node 进行绑定的字段 NodeName:一旦 Pod 的这个字段 ...
- c# 优化代码的一些规则——用委托表示回调[五]
前言 委托为什么可以作为回调? 因为委托可以作为方法的参数. 正文 通过委托,是一种定义类型安全回调. 记得第一个接触委托的时候,是老师讲的,后来真正用的是完成学期项目,一个winform,委托作为事 ...
- IIS 动态与静态压缩
前言 我们有时候需要在页面启动的时候进行压缩代码,这时候iis已经帮助我们做好了动态压缩代码. 正文 静态压缩及动态压缩的区别 IIS7中的HTTP压缩分为"静态内容压缩"和&qu ...
- DBJ,DB,CJJ,CECS 标准区别及全套下载教程
DBJ DBJ开头的标准是地方建筑标准:D--地方. B--标准. J--建筑. <中华人民共和国标准化法>将中国标准分为国家标准.行业标准.地方标准(DB).企业标准(Q/)四级.地方标 ...
- 使用python获取知乎**话题下的所有回答,并统计后发布。
第一步:获取话题需要的url需要,并向上取整 for idx in range(0,math.ceil(totals/5)): url = f"https://www.zhihu.com/a ...
- 力扣1076(MySQL)-员工项目Ⅱ(简单)
题目: 编写一个SQL查询,报告所有雇员最多的项目. 查询结果格式如下所示: 解题思路: 方法一:将两个表联结,以project_id进行分组,统计员工数降序排序,然后筛选出第一条数据. 1 sel ...
- API 开发的后盾:平台工程提供强力动态支持
过去几年,开发团队一直在发展传统的 DevOps.一些开发人员认为,CloudOps 或 DeploymentOps 等新实践的兴起将会导致回到孤岛问题.其他人则不愿意在承担所有其他职责之外构建.部署 ...
- MaxCompute笛卡尔积逻辑的参数优化&复杂JOIN逻辑优化
简介: 这篇文章主要讲一个SQL优化反映的两个优化点.分别是: 一.笛卡尔积逻辑的参数优化. 二.一个复杂JOIN逻辑的优化思路. 1. 优化概述 最近协助一个项目做下优化任务的工作.因为主要数据都 ...
- WPF 一千个矩形做动画测试性能
在很多性能测试开始之前,都需要测试一下自己的期望优化的设备的性能上限是多少.我每次都是重新写一个测试应用,因为每次需要优化的方向都不相同.本文将记录一个我写的一个简单的测试应用,这里面包含了一千个半透 ...