Map集合常见的几种迭代方法

本文详细介绍了Java中Map的五种常见遍历方法,包括使用entrySet、keySet、iterator、values以及JDK1.8新增的forEach方式,每种方法都附带了具体的代码示例。

在java中,Map是一种常用的存储元素的方法,Map使用“键值对”的方式来存储元素,其中每个键映射到一个值,值可以重复,键不可以重复。以下介绍几种Map常见的迭代方法。
首先,初始化一个Map:

 private static Map<String, Object> map = new HashMap<String, Object>() {
        private static final long serialVersionUID = 5657009787456288973L;
        {
            put("name", "jack");
            put("sex", "M");
            put("age", 23);
        }
    };

接下来便是对这个Map集合进行遍历了:
1.使用entrySet的方式(使用最多):

	@Test
    public void entrySetTest() {
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "=" + entry.getValue());
        }
    }

2.使用keySet的方式:

    @Test
    public void keySetTest() {
        for (String key : map.keySet()) {
            System.out.println(key + "=" + map.get(key));
        }
    }

3.使用iterator的方式:

    @Test
    public void iteratorTest() {
        Iterator<Entry<String, Object>> iterator1 = map.entrySet().iterator();
        while (iterator1.hasNext()) {
            Entry<String, Object> entry = iterator1.next();
            System.out.println(entry.getKey() + "=" + entry.getValue());
        }

        Iterator<String> iterator2 = map.keySet().iterator();
        while (iterator2.hasNext()) {
            String key = iterator2.next();
            System.out.println(key + "=" + map.get(key));
        }
    }

4.使用values的方式(这种方式不能遍历key):

    @Test
    public void valuesTest() {
        for (Object obj : map.values()) {
            System.out.println(obj);
        }
    }

5.使用forEach的方式(JDK1.8新增,更加简洁优雅的迭代方式):

    @Test
    public void foreachTest() {
        map.forEach((key, value) -> {
            System.out.println(key + "=" + value);
        });
    }
### Java Map 集合迭代示例代码 在 Java 中,`Map` 集合可以通过多种方式进行迭代。以下是几种常见迭代方法,包括传统的 `for` 循环、增强型 `for` 循环以及 Java 8 引入的 Lambda 表达式和 Stream API。 #### 方法一:使用 `keySet()` 迭代 通过获取 `Map` 的键集合(`keySet()`),然后遍历这些键来访问对应的值。 ```java import java.util.HashMap; import java.util.Map; public class MapIterationExample { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); for (String key : map.keySet()) { System.out.println("Key: " + key + ", Value: " + map.get(key)); } } } ``` 这种方法利用了 `map.keySet()` 获取所有键,并通过 `map.get(key)` 获取对应的值[^2]。 --- #### 方法二:使用 `entrySet()` 迭代 `entrySet()` 返回一个包含所有键值对的集合,每个元素都是一个 `Map.Entry` 对象。通过这种方式可以直接访问键和值。 ```java import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapIterationExample { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); Set<Map.Entry<String, Integer>> entries = map.entrySet(); for (Map.Entry<String, Integer> entry : entries) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } } } ``` 此方法直接操作键值对对象,避免了多次调用 `get()` 方法,效率更高[^5]。 --- #### 方法三:使用 Java 8 的 Lambda 表达式 Java 8 提供了更简洁的方式,可以使用 `forEach()` 方法结合 Lambda 表达式来迭代 `Map`。 ```java import java.util.HashMap; import java.util.Map; public class MapIterationExample { public static void main(String[] args) { 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); }); } } ``` 这种方法更加简洁且易于阅读,适用于需要快速处理键值对的场景[^3]。 --- #### 方法四:使用迭代器(Iterator) 通过 `Iterator` 遍历键集合或键值对集合。 ```java import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class MapIterationExample { public static void main(String[] args) { 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(); System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } } } ``` 此方法提供了对迭代过程的更多控制,例如可以在迭代过程中删除元素[^2]。 --- #### 方法五:使用 Stream API Java 8 的 `Stream` API 可以将 `Map` 转换为流并进行操作。 ```java import java.util.HashMap; import java.util.Map; public class MapIterationExample { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); map.entrySet().stream() .forEach(entry -> System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue())); } } ``` 这种方法适合需要对数据进行复杂操作(如过滤、映射等)的场景[^3]。 --- #### 总结 以上展示了五种不同的 `Map` 集合迭代方式,每种方法都有其适用场景。选择合适的方法可以根据具体需求和代码风格来决定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder-文小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值