• Map遍历 key-value 的4种方法


    四种方法

    • 先用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

    Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

    1、构造HashMap,给hashMap添加元素

    1. HashMap hashMap = new HashMap();
    2. hashMap.put("三国演义","罗贯中");
    3. hashMap.put("水浒传","施耐庵");
    4. hashMap.put("西游记","吴承恩");
    5. hashMap.put("红楼梦","曹雪芹");

    2、 方法一:先用keySet()取出所有key值,再取出对应value——使用迭代器遍历

    2.1 代码

    1. /*1、先用keySet()取出所有key值,再取出对应value——增强for循环遍历*/
    2. System.out.println("====1、先用keySet()取出所有key值,再取出对应value——增强for循环遍历====");
    3. Set keyset = hashMap.keySet();
    4. for(Object key:keyset){
    5.     System.out.println(key+"-"+hashMap.get(key));
    6. }

    2.2 运行结果

    3、 方法二:先取出所有的key,再通过key取出对应的value——使用迭代器遍历

    3.1 代码

    1. /*2、先用keySet()取出所有key值,再取出对应value——使用迭代器遍历*/
    2. System.out.println("====2、先用keySet()取出所有key值,再取出对应value——使用迭代器遍历====");
    3. Iterator iterator = keyset.iterator();
    4. while(iterator.hasNext()){
    5.     Object key = iterator.next();
    6.     System.out.println(key+"-"+hashMap.get(key));
    7. }

    3.2 运行结果

    4、 方法三:通过entrySet()获得key-value值——增强for循环遍历

    4.1 代码

    1. /*3、通过entrySet()获得key-value值——增强for循环遍历*/
    2. System.out.println("====3、通过entrySet()获得key-value值——增强for循环遍历====");
    3. Set set = hashMap.entrySet();
    4. for(Object key:set){
    5.     Map.Entry entry = (Map.Entry) key;
    6.     System.out.println(entry.getKey()+"-"+entry.getValue());
    7. }

    4.2 运行结果

    5、 方法四:通过entrySet()获得key-value值——使用迭代器遍历

    5.1 代码

    1. /*4、通过entrySet()获得key-value值——使用迭代器遍历*/
    2. System.out.println("====4、通过entrySet()获得key-value值——使用迭代器遍历====");
    3. Set set1 = hashMap.entrySet();
    4. Iterator iterator1 = set1.iterator();
    5. while(iterator1.hasNext()){
    6.     Object itset = iterator1.next();
    7.     Map.Entry entry = (Map.Entry) itset;
    8.     System.out.println(entry.getKey()+"-"+entry.getValue());
    9. }

    5.2 运行结果

    6、完整代码

    1. import java.util.HashMap;
    2. import java.util.Iterator;
    3. import java.util.Map;
    4. import java.util.Set;
    5. public class MapTraverse {
    6.     public static void main(String[] args){
    7.         HashMap hashMap = new HashMap();
    8.         hashMap.put("三国演义","罗贯中");
    9.         hashMap.put("水浒传","施耐庵");
    10.         hashMap.put("西游记","吴承恩");
    11.         hashMap.put("红楼梦","曹雪芹");
    12.         /*1、先用keySet()取出所有key值,再取出对应value——增强for循环遍历*/
    13.         System.out.println("====1、先用keySet()取出所有key值,再取出对应value——增强for循环遍历====");
    14.         Set keyset = hashMap.keySet();
    15.         for(Object key:keyset){
    16.             System.out.println(key+"-"+hashMap.get(key));
    17.         }
    18.         /*2、先用keySet()取出所有key值,再取出对应value——使用迭代器遍历*/
    19.         System.out.println("====2、先用keySet()取出所有key值,再取出对应value——使用迭代器遍历====");
    20.         Iterator iterator = keyset.iterator();
    21.         while(iterator.hasNext()){
    22.             Object key = iterator.next();
    23.             System.out.println(key+"-"+hashMap.get(key));
    24.         }
    25.         /*3、通过entrySet()获得key-value值——增强for循环遍历*/
    26.         System.out.println("====3、通过entrySet()获得key-value值——增强for循环遍历====");
    27.         Set set = hashMap.entrySet();
    28.         for(Object key:set){
    29.             Map.Entry entry = (Map.Entry) key;
    30.             System.out.println(entry.getKey()+"-"+entry.getValue());
    31.         }
    32.         /*4、通过entrySet()获得key-value值——使用迭代器遍历*/
    33.         System.out.println("====4、通过entrySet()获得key-value值——使用迭代器遍历====");
    34.         Set set1 = hashMap.entrySet();
    35.         Iterator iterator1 = set1.iterator();
    36.         while(iterator1.hasNext()){
    37.             Object itset = iterator1.next();
    38.             Map.Entry entry = (Map.Entry) itset;
    39.             System.out.println(entry.getKey()+"-"+entry.getValue());
    40.         }
    41.     }
    42. }

    7、应用举例

    7.1 问题描述

    使用HashMap添加3个员工对象,要求

    • 键:员工id

    • 值:员工对象 并遍历显示工资>18000的员工(遍历方式最少两种)员工类:姓名、工资、员工id

    7.2 代码

    1. import java.util.HashMap;
    2. import java.util.Iterator;
    3. import java.util.Map;
    4. import java.util.Set;
    5. /*使用HashMap添加3个员工对象,要求
    6. 键:员工id
    7. 值:员工对象
    8. 并遍历显示工资>18000的员工(遍历方式最少两种)员工类:姓名、工资、员工id
    9. */
    10. public class MapExercise {
    11.     public static void main(String[] args) {
    12.         HashMap hashMap = new HashMap();
    13.         hashMap.put(1new employee("Tom"20000.01));
    14.         hashMap.put(2new employee("Jack"10000.02));
    15.         hashMap.put(3new employee("Bob"30000.03));
    16.         hashMap.put(4new employee("Marry"17000.04));
    17.         /*1、通过keySet()获取所有key值,再得到对应的value值——增强for循环遍历*/
    18.         System.out.println("====1、通过keySet()获取所有key值,再得到对应的value值——增强for循环遍历");
    19.         Set keyset = hashMap.keySet();
    20.         for (Object key : keyset) {
    21.             employee m = (employee) hashMap.get(key);
    22.             if (m.getSalary() > 18000) {
    23.                 System.out.println(m);
    24.             }
    25.         }
    26.         /*2、通过entrySet()获取key-value值——使用迭代器遍历*/
    27.         System.out.println("====2、通过entrySet()获取key-value值——使用迭代器遍历====");
    28.         Set set = hashMap.entrySet();
    29.         Iterator iterator = set.iterator();
    30.         while (iterator.hasNext()) {
    31.             Object itset = iterator.next();
    32.             Map.Entry entry = (Map.Entry) itset;
    33.             employee m = (employee) entry.getValue();
    34.             if (m.getSalary() > 18000) {
    35.                 System.out.println(m);
    36.             }
    37.         }
    38.     }
    39. }
    40. class employee{
    41.     private String name;
    42.     private Double salary;
    43.     private int id;
    44.     public employee(String name, Double salary, int id) {
    45.         this.name = name;
    46.         this.salary = salary;
    47.         this.id = id;
    48.     }
    49.     public String getName() {
    50.         return name;
    51.     }
    52.     public void setName(String name) {
    53.         this.name = name;
    54.     }
    55.     public Double getSalary() {
    56.         return salary;
    57.     }
    58.     public void setSalary(Double salary) {
    59.         this.salary = salary;
    60.     }
    61.     public int getId() {
    62.         return id;
    63.     }
    64.     public void setId(int id) {
    65.         this.id = id;
    66.     }
    67.     @Override
    68.     public String toString() {
    69.         return "employee{" +
    70.                 "name='" + name + '\'' +
    71.                 ", salary=" + salary +
    72.                 ", id=" + id +
    73.                 '}';
    74.     }
    75. }

    7.3 运行结果

    以上是基础的Map遍历方法,Java8简化了很多操作,效率上基本无差,关于Java8新方法遍历Map,可以参考:

     

  • 相关阅读:
    『亚马逊云科技产品测评』活动征文|搭建图床chevereto
    cadence SPB17.4 - allegro - create and switch Visibility view
    Go学习之旅:包、变量和函数(DAY 1)
    ActiveMQ
    vue3后台管理框架之API接口统一管理
    每天一个数据分析题(三百七十九)- 用户留存
    全志V853芯片适配双目GC2053的操作步骤
    [Database] MySQL 5.7+ JSON 字段的使用的处理
    Vim功能大纲
    大学生线上学习行为的聚类、成因与对策研究
  • 原文地址:https://blog.csdn.net/m0_71777195/article/details/126053708