Map遍历集合

方法:

第一种:通过Map.keySet遍历key和value(通过get(key)获取)

第二种:通过Map.entrySet使用iterator遍历

第三种:通过Map.entrySet遍历

第四种:通过Map.values()遍历所有的value,但不能遍历key

举例说明


package com.mcy;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class Name {
    public static void main(String[] args) throws Exception {
        Map<String, String> map = new HashMap<>();
        map.put("name", "XXX");
        map.put("age", "23");
        map.put("微信", "123456");
        map.put("QQ", "65432");
        map.put("爱好", "逛吃逛吃逛吃");

        //第一种:通过Map.keySet遍历key和value

        for (String key : map.keySet()) {
            System.out.println("key= " + key + " ;value= " + map.get(key));
        }

        System.out.println("------------------------------------------------ ");

        //第二种:通过Map.entrySet使用iterator遍历

        Iterator<Map.Entry<String, String>> iter = map.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry<String, String> next = iter.next();
            System.out.println("key= " + next.getKey() + " ; value= " + next.getValue());
        }

        System.out.println("------------------------------------------------ ");

        //第三种:通过Map.entrySet遍历

        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println("key= " + entry.getKey() + " ; value= " + entry.getValue());
        }

        System.out.println("------------------------------------------------ ");

        //第四种:通过Map.values()遍历所有的value,但不能遍历key

        for (String str : map.values()) {
            System.out.println("value= " + str);
        }

    }

}

结果截图


key= QQ ;value= 65432
key= 爱好 ;value= 逛吃逛吃逛吃
key= name ;value= XXX
key= 微信 ;value= 123456
key= age ;value= 23
------------------------------------------------ 
key= QQ ; value= 65432
key= 爱好 ; value= 逛吃逛吃逛吃
key= name ; value= XXX
key= 微信 ; value= 123456
key= age ; value= 23
------------------------------------------------ 
key= QQ ; value= 65432
key= 爱好 ; value= 逛吃逛吃逛吃
key= name ; value= XXX
key= 微信 ; value= 123456
key= age ; value= 23
------------------------------------------------ 
value= 65432
value= 逛吃逛吃逛吃
value= XXX
value= 123456
value= 23

HashMap 遍历

1.迭代器 EntrySet

public class HashMapTest {
    public static void main(String[] args) {
        // 创建并赋值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍历
        Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Integer, String> entry = iterator.next();
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
    }
}

2.迭代器 KeySet

public class HashMapTest {
    public static void main(String[] args) {
        // 创建并赋值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍历
        Iterator<Integer> iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            Integer key = iterator.next();
            System.out.println(key);
            System.out.println(map.get(key));
        }
    }
}

3.ForEach EntrySet

public class HashMapTest {
    public static void main(String[] args) {
        // 创建并赋值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍历
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
    }
}

4.ForEach KeySet

public class HashMapTest {
    public static void main(String[] args) {
        // 创建并赋值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍历
        for (Integer key : map.keySet()) {
            System.out.println(key);
            System.out.println(map.get(key));
        }
    }
}

5.Lambda

public class HashMapTest {
    public static void main(String[] args) {
        // 创建并赋值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍历
        map.forEach((key, value) -> {
            System.out.println(key);
            System.out.println(value);
        });
    }
}

6.Streams API 单线程

public class HashMapTest {
    public static void main(String[] args) {
        // 创建并赋值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍历
        map.entrySet().stream().forEach((entry) -> {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        });
    }
}

7.Streams API 多线程

public class HashMapTest {
    public static void main(String[] args) {
        // 创建并赋值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍历
        map.entrySet().parallelStream().forEach((entry) -> {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        });
    }
}

map找出最小value对应的key

Map<String, Integer> map = new HashMap();
        map.put("1", 8);
        map.put("2", 12);
        map.put("3", 53);
        map.put("4", 33);
        map.put("5", 11);
        map.put("6", 3);
        map.put("7", 3);
        List<Map.Entry<String,Integer>> list5 = new ArrayList(map.entrySet());
        Collections.sort(list5, (o1, o2) -> (o1.getValue() - o2.getValue()));
        System.out.println(list5.get(0).getKey());

找出最小的value值

int minValue = Integer.MIN_VALUE;
        for (Integer value : map.values()) {
            if(value < minValue){
                minValue = value;
            }
        }
        System.out.println(minValue);

 

### 如何在编程中遍历Map集合 #### Java 中的 Map 遍历方式 Java 提供了多种方法来遍历 `Map` 类型的数据结构。以下是几种常见的实现方式及其特点: 1. **使用 Iterator 迭代器** 通过获取 `entrySet()` 的迭代器对象,可以逐一遍历键值对。 ```java import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("J", "Java"); map.put("K", "Kotlin"); map.put("G", "Groovy"); Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); System.out.println(entry.getKey() + ": " + entry.getValue()); } } } ``` 2. **使用增强型 for 循环(foreach)** 增强型 for 循环简化了代码逻辑,适用于大多数场景。 ```java import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("J", "Java"); map.put("K", "Kotlin"); map.put("G", "Groovy"); for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } } ``` 3. **使用 Lambda 表达式(Java 8及以上版本)** 利用流式处理功能,Lambda 表达式提供了更简洁的方式。 ```java import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("J", "Java"); map.put("K", "Kotlin"); map.put("G", "Groovy"); map.forEach((key, value) -> System.out.println(key + ": " + value)); } } ``` 以上三种方法均能完成对 `Map` 数据类型的遍历操作[^2]。 --- #### Drools 中的 Map 遍历 在 Drools 规则引擎中,可以通过 DRL 文件定义规则并访问工作内存中的事实对象。如果需要遍历 `Map` 类型的事实对象,则可以在条件部分编写相应的匹配逻辑。例如: ```drl rule "Iterate over a Map" when $map : Map( this.containsKey("key") ) then System.out.println($map.get("key")); end ``` 上述规则展示了如何基于特定条件筛选出符合条件的 `Map` 实例,并打印对应的值。需要注意的是,这里的“遍历”并非传统意义上的逐一访问所有元素,而是利用 Drools 引擎的强大模式匹配能力完成目标检索[^1]。 --- #### Groovy 中的 Map 遍历 Groovy 是一种动态语言,其语法更加灵活且易于阅读。下面是一个简单的例子展示如何遍历 `Map` 并应用过滤条件: ```groovy class Test { static void main(args) { def map = [J:"Java", K:"Kotlin", G:"Groovy"] // 遍历整个 Map map.each { key, value -> println "$key: $value" } // 条件筛选后遍历 def result = map.find { key, value -> value.contains('a') } println "Filtered Result: ${result}" } } ``` 此脚本不仅实现了基本的遍历功能,还演示了如何结合闭包表达式执行复杂的业务逻辑[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值