当前位置:网站首页>Map遍历 key-value 的4种方法
Map遍历 key-value 的4种方法
2022-07-17 12:37:00 【Java精选】
四种方法先用
keySet()取出所有key值,再取出对应value——增强for循环遍历先用
keySet()取出所有key值,再取出对应value——使用迭代器遍历通过
entrySet来获取key-value——增强for循环遍历通过
entrySet来获取key-value——使用迭代器遍历

Map是java中的接口,Map.Entry是Map的一个内部接口。Map提供了一些常用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值的Set集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry<K, V>。
Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。
1、构造HashMap,给hashMap添加元素
HashMap hashMap = new HashMap();
hashMap.put("三国演义","罗贯中");
hashMap.put("水浒传","施耐庵");
hashMap.put("西游记","吴承恩");
hashMap.put("红楼梦","曹雪芹");2、 方法一:先用keySet()取出所有key值,再取出对应value——使用迭代器遍历
2.1 代码
/*1、先用keySet()取出所有key值,再取出对应value——增强for循环遍历*/
System.out.println("====1、先用keySet()取出所有key值,再取出对应value——增强for循环遍历====");
Set keyset = hashMap.keySet();
for(Object key:keyset){
System.out.println(key+"-"+hashMap.get(key));
}2.2 运行结果

3、 方法二:先取出所有的key,再通过key取出对应的value——使用迭代器遍历
3.1 代码
/*2、先用keySet()取出所有key值,再取出对应value——使用迭代器遍历*/
System.out.println("====2、先用keySet()取出所有key值,再取出对应value——使用迭代器遍历====");
Iterator iterator = keyset.iterator();
while(iterator.hasNext()){
Object key = iterator.next();
System.out.println(key+"-"+hashMap.get(key));
}3.2 运行结果

4、 方法三:通过entrySet()获得key-value值——增强for循环遍历
4.1 代码
/*3、通过entrySet()获得key-value值——增强for循环遍历*/
System.out.println("====3、通过entrySet()获得key-value值——增强for循环遍历====");
Set set = hashMap.entrySet();
for(Object key:set){
Map.Entry entry = (Map.Entry) key;
System.out.println(entry.getKey()+"-"+entry.getValue());
}4.2 运行结果

5、 方法四:通过entrySet()获得key-value值——使用迭代器遍历
5.1 代码
/*4、通过entrySet()获得key-value值——使用迭代器遍历*/
System.out.println("====4、通过entrySet()获得key-value值——使用迭代器遍历====");
Set set1 = hashMap.entrySet();
Iterator iterator1 = set1.iterator();
while(iterator1.hasNext()){
Object itset = iterator1.next();
Map.Entry entry = (Map.Entry) itset;
System.out.println(entry.getKey()+"-"+entry.getValue());
}5.2 运行结果
6、完整代码
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTraverse {
public static void main(String[] args){
HashMap hashMap = new HashMap();
hashMap.put("三国演义","罗贯中");
hashMap.put("水浒传","施耐庵");
hashMap.put("西游记","吴承恩");
hashMap.put("红楼梦","曹雪芹");
/*1、先用keySet()取出所有key值,再取出对应value——增强for循环遍历*/
System.out.println("====1、先用keySet()取出所有key值,再取出对应value——增强for循环遍历====");
Set keyset = hashMap.keySet();
for(Object key:keyset){
System.out.println(key+"-"+hashMap.get(key));
}
/*2、先用keySet()取出所有key值,再取出对应value——使用迭代器遍历*/
System.out.println("====2、先用keySet()取出所有key值,再取出对应value——使用迭代器遍历====");
Iterator iterator = keyset.iterator();
while(iterator.hasNext()){
Object key = iterator.next();
System.out.println(key+"-"+hashMap.get(key));
}
/*3、通过entrySet()获得key-value值——增强for循环遍历*/
System.out.println("====3、通过entrySet()获得key-value值——增强for循环遍历====");
Set set = hashMap.entrySet();
for(Object key:set){
Map.Entry entry = (Map.Entry) key;
System.out.println(entry.getKey()+"-"+entry.getValue());
}
/*4、通过entrySet()获得key-value值——使用迭代器遍历*/
System.out.println("====4、通过entrySet()获得key-value值——使用迭代器遍历====");
Set set1 = hashMap.entrySet();
Iterator iterator1 = set1.iterator();
while(iterator1.hasNext()){
Object itset = iterator1.next();
Map.Entry entry = (Map.Entry) itset;
System.out.println(entry.getKey()+"-"+entry.getValue());
}
}
}7、应用举例
7.1 问题描述
使用HashMap添加3个员工对象,要求
键:员工id
值:员工对象 并遍历显示工资>18000的员工(遍历方式最少两种)员工类:姓名、工资、员工id
7.2 代码
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*使用HashMap添加3个员工对象,要求
键:员工id
值:员工对象
并遍历显示工资>18000的员工(遍历方式最少两种)员工类:姓名、工资、员工id
*/
public class MapExercise {
public static void main(String[] args) {
HashMap hashMap = new HashMap();
hashMap.put(1, new employee("Tom", 20000.0, 1));
hashMap.put(2, new employee("Jack", 10000.0, 2));
hashMap.put(3, new employee("Bob", 30000.0, 3));
hashMap.put(4, new employee("Marry", 17000.0, 4));
/*1、通过keySet()获取所有key值,再得到对应的value值——增强for循环遍历*/
System.out.println("====1、通过keySet()获取所有key值,再得到对应的value值——增强for循环遍历");
Set keyset = hashMap.keySet();
for (Object key : keyset) {
employee m = (employee) hashMap.get(key);
if (m.getSalary() > 18000) {
System.out.println(m);
}
}
/*2、通过entrySet()获取key-value值——使用迭代器遍历*/
System.out.println("====2、通过entrySet()获取key-value值——使用迭代器遍历====");
Set set = hashMap.entrySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Object itset = iterator.next();
Map.Entry entry = (Map.Entry) itset;
employee m = (employee) entry.getValue();
if (m.getSalary() > 18000) {
System.out.println(m);
}
}
}
}
class employee{
private String name;
private Double salary;
private int id;
public employee(String name, Double salary, int id) {
this.name = name;
this.salary = salary;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "employee{" +
"name='" + name + '\'' +
", salary=" + salary +
", id=" + id +
'}';
}
}7.3 运行结果

作者:dengmsjava
https://blog.csdn.net/qq_40839718/article/details/123622684
公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!
最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!
Java精选面试题(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!
------ 特别推荐 ------
特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注。
文章有帮助的话,点在看,转发吧!
边栏推荐
- 自动化之图形界面库pyautogui
- 无法改变的现状
- R language uses the ordinal of epidisplay package or. The display function obtains the summary statistical information of the ordered logistic regression model (the odds ratio and its confidence inter
- 如何使用SVG制作沿任意路径排布的文字效果
- LVI-SAM:激光-IMU-相机紧耦合建图
- Crud code practice of user management based on koa2 + MySQL
- 圆桌实录:炉边对话——如何在 Web3 实现创新
- 押注.NET 是件好事
- [Niuke swipe questions] / *c language realizes left-hand rotation of strings*/
- 笔记本键盘失灵解决办法
猜你喜欢

Introduction to blender automated modeling

为什么磁力变速齿轮会反转?

架构实战营|模块7

2022年全国最新消防设施操作员(中级消防设施操作员)模拟试题及答案

2022年湖南省中职组“网络空间安全”数据包分析infiltration.pacpng解析(超详细)

Attachment handling of SAP Fiori

Virtual CPU and memory in yarn (CDH)

yarn(cdh)中的虚拟cpu和内存

Bidirectional NAT Technology

Kirin Xin'an operating system derivative solution | host security reinforcement software, to achieve one click rapid reinforcement!
随机推荐
Figure an introduction to the interpretable method of neural network and a code example of gnnexplainer interpreting prediction
HCIA rip experiment 7.11
The new energy track has high risks, so please pay attention to safety
各厂商的数据湖解决方案
SAP S4 Material Management 库存模块 MARD 数据库表读取技术细节介绍
Attachment handling of SAP Fiori
R语言使用lm函数构建线性回归模型、使用subset函数指定对于数据集的子集构建回归模型(使用subset函数筛选满足条件的数据子集构建回归模型)
How to solve the problem of cross domain access by Google browser
看一看这丑恶嘴脸 | MathWorks Account Unavailable - Technical Issue
yarn(cdh)中的虚拟cpu和内存
基于JSP的小说写作与创作网站
Quick completion guide of manipulator (zero five): resources related to manipulator
HCIA OSPF
Koa2 connects to MySQL database to realize the operation of adding, deleting, changing and querying
Idea display service port --service
idea展示服务端口--service
Solutions to notebook keyboard failure
R语言ggplot2可视化:使用ggpubr包的gghistogram函数可视化分组直方图、使用palette参数自定义分组直方图的条形边框颜色
The R language uses the plot function in the native package (basic import package, graphics) to visualize the scatter plot
AutoJs学习-多功能宝箱-下
