【Java】Map遍历key-value的四种方法

article/2025/8/17 13:10:20

Map遍历key-value的四种方法

(1)先用keySet()取出所有key值,再取出对应value——增强for循环遍历
(2)先用keySet()取出所有key值,再取出对应value——使用迭代器遍历
(3)通过entrySet来获取key-value——增强for循环遍历
(4)通过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;}@Overridepublic String toString() {return "employee{" +"name='" + name + '\'' +", salary=" + salary +", id=" + id +'}';}
}

7.3 运行结果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/5DHqIfH5.shtml

相关文章

SVM——核函数

我们知道&#xff0c;SVM相对感知机而言&#xff0c;它可以解决线性不可分的问题&#xff0c;那么它是怎么解决的呢&#xff1f;它的解决思想很简单&#xff0c;就是对原始数据的维度变换&#xff0c;一般是扩维变换&#xff0c;使得原样本空间中的样本点线性不可分&#xff0c…

SVM核函数概述

特征空间的隐式映射&#xff1a;核函数 咱们首先给出核函数的来头&#xff1a;在上文中&#xff0c;我们已经了解到了SVM处理线性可分的情况&#xff0c;而对于非线性的情况&#xff0c;SVM 的处理方法是选择一个核函数 κ(⋅,⋅) &#xff0c;通过将数据映射到高维空间&#x…

聚类算法之核函数

一&#xff1a;监督学习与无监督学习 1&#xff0c;监督学习 监督学习就是人们常说的分类&#xff0c;通过训练已有样本得到一个最优模型&#xff0c;利用该模型将输入转化成输出&#xff0c;对输出进行判断&#xff0c;从而实现分类&#xff0c;也就是具有了对未知数据进行分类…

svm核函数的理解和选择

特征空间的隐式映射&#xff1a;核函数 咱们首先给出核函数的来头&#xff1a;在上文中&#xff0c;我们已经了解到了SVM处理线性可分的情况&#xff0c;而对于非线性的情况&#xff0c;SVM 的处理方法是选择一个核函数 κ(⋅,⋅) &#xff0c;通过将数据映射到高维空间&#x…

matlab rbf核函数,四类核函数(Sigmoid+RBF)

Q:有个疑问就是,模型本身不是线性的,为什么一定要先用线性模型做? A:有核函数和泰勒展开等等,可以无限逼近转化成线性? 小知识: 1.Sigmoid函数,即f(x)=1/(1+e-x)。是神经元的非线性作用函数。广泛应用在神经网络中。又叫Logistic函数。 机器学习中一个重要的预测模型逻辑…

SVM的核函数详解

文章目录 1、核函数背景核函数正式定义 2、高斯核函数2.2 参数带宽 σ \sigma σ的影响2.3高斯核函数的实际意义 2、多项式核函数4、参考资料 1、核函数背景 本文为核函数进阶教程&#xff0c;希望看文章之前最好对核函数有一些最基本的了解&#xff0c;不然有些地方可能会看不…

常见核函数

这篇博文开始的例子就很好地揭示了核函数的简单原理&#xff0c;写得很好&#xff01; 原地址&#xff1a;https://blog.csdn.net/zkq_1986/article/details/52448238 1 核函数K&#xff08;kernel function&#xff09;定义 核函数K&#xff08;kernel function&#xff09;就…

CUDA核函数

核函数是指在GPU端运行的代码&#xff0c;核函数内部主要干了什么&#xff1f;简而言之&#xff0c;就是规定GPU的各个线程访问哪个数据并执行什么计算。 文章目录 一、CUDA规范二、核函数内部线程的使用2.1 如何启动核函数 一、CUDA规范 编写核函数必须遵循CUDA规范&#xff…

SVM与核函数

文章目录 核技巧与SVM核函数本质线性可分的SVM与硬间隔最大化SVM对偶算法核技巧高斯核多种不同的核函数比较soft margin 问题核函数 核函数 核技巧与SVM SVM原本是用来解决二分类的分类模型 它和感知机不同的一点是它取到的分类器是在特征空间上的最大间隔的分类器 而为了解决…

核函数(核技巧)

核技巧Kernel trick 背景及含义&#xff1a; 对于 原始样本空间内或许不存在能正确划分两类样本的超平面 问题&#xff0c;考虑 将样本从原始空间映射到一个更高维的特征空间&#xff0c;使得样本在这个特征空间内线性可分。 令 ϕ ( x ) \phi(x) ϕ(x)表示将x映射后的特征向量…

了解核函数

1、核函数定义&#xff1a; 核函数包括线性核函数、多项式核函数、高斯核函数等&#xff0c;其中高斯核函数最常用&#xff0c;可以将数据映射到无穷维&#xff0c;也叫做径向基函数&#xff08;Radial Basis Function 简称 RBF&#xff09;&#xff0c;是某种沿径向对称的标量…

核函数

对于优化问题&#xff1a; 的求解需要计算这个内积&#xff0c;而如果输入样本线性不可分的话&#xff0c;我们采取的方法是通过函数映射将输入样本映射到另外一个高维空间并使其线性可分。 以库克定律为例(http://zh.wikipedia.org/zh-cn/%E9%9D%99%E7%94%B5%E5%8A%9B)&#x…

什么是核函数?如何理解?

个人理解&#xff0c;核函数的功能就是从低维度的空间向高维度空间转换的函数&#xff0c; 因为在低维空间不可以线性分类的问题到高维度空间就可以线性分类的。 其求法为 低维空间的点映射到高维空间的点后&#xff0c;两个点的内积 就是核函数。 ~~~~~~~~~~~~~~~~~~~~~~~~…

你知道什么是核函数吗

目录 一、常用核函数&#xff1a;二、核函数特点&#xff1a;三、选择核函数的方法&#xff1a;四、核函数方法实施步骤&#xff1a;五、核函数在模式识别中的应用&#xff1a;六、核函数方法原理&#xff1a; 核函数K&#xff08;kernel function&#xff09;就是指K(x, y) &…

kernel核函数是什么、用来干什么 及其详细推导

在说核函数之前,我们先说说映射及其作用. 如果在当前空间对数据类别不好使用线性函数进行划分&#xff0c;则通过一个函数φ( x)将数据点从当前空间映射到另一空间去&#xff08;映射后的空间叫特征空间&#xff0c;通常是更高维的空间&#xff0c;当然不是绝对&#xff09;以方…

核函数(Kernel function)(举例说明,通俗易懂)

已知有一组向量&#xff0c;可用线性函数去探索其是否具有线性关系&#xff0c;若数据之间是非线性呢&#xff1f; 非线性数据是指只有利用非线性模型才能更好的预测。但非线性问题往往不好求解&#xff0c;所以希望用解线性分类问题的方法解决这个问题。所采取的方法是进行一…

Linux笔记(5):库文件

1、库文件 库是一组预先编译好的方法的集合。 Linux系统存储的库的位置一般在/lib和/usr/lib。库的头文件一般被存储在/usr/include下货其子目录下。 库有两种&#xff1a; &#xff08;1&#xff09;静态库&#xff0c;命令规则&#xff1a;libxxx.a &#xff08;2&#…

vs2019添加库文件

vs2019添加库文件 环境&#xff1a;windows10&#xff0c;64位&#xff0c;vs2019 vs安装路径&#xff1a;D:\visual_studio 需要的材料&#xff1a;头文件&#xff0c;编译好的库文件 方法一 以GLFW为例&#xff0c;找到IDE或者编译器的**/lib和/include文件夹&#xff0…

【Linux基础】静态库和共享库(如何自定义库文件?)

文章目录 前言一、库文件的基本知识1.库文件分类2.库文件命名 二、如何自定义静态库?1.静态库简介2.具体流程&#xff08;详细步骤&#xff09;3.静态库缺点 三、如何自定义共享库?1.共享库简介2.具体流程&#xff08;详细步骤&#xff09;3.共享库优点 四、静态库与共享库区…

Linux 系统上的库文件生成与使用

1.库文件 库是一组预先编译好的方法的集合。Linux系统存储的库的位置一般在&#xff1a;/lib 和 /usr/lib。 在 64 位的系统上有些库也可能被存储在/usr/lib64 下。库的头文件一般会被存储在 /usr/include 下或其子目录下。 库有两种&#xff0c;一种是静态库&#xff0c;其…