Java中map常见操作集合

Java中遍历Map的几种常见方式

发布:2023-08-19     分类:闲者编程     标签:JavaMap
2023 - 8 - 19

一. Java中遍历Map的几种常见方式

在Java中,可以使用不同的方式来遍历Map,以下是常见的几种方式:

1. 使用迭代器遍历Map

使用Map.Entry对象的迭代器来遍历Map中的键值对,示例代码如下:

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

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

2. 使用foreach循环遍历Map

使用foreach循环遍历Map中的键值对,示例代码如下:

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

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

3. 使用Lambda表达式和Stream API遍历Map

使用Lambda表达式和Stream API遍历Map中的键值对,示例代码如下:

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

map.entrySet().stream().forEach(entry -> {
    String key = entry.getKey();
    Integer value = entry.getValue();
    System.out.println(key + ": " + value);
});

4. 使用Java 8中的forEach()方法遍历Map

使用Java 8中的forEach()方法遍历Map中的键值对,示例代码如下:

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

map.forEach((key, value) -> System.out.println(key + ": " + value));

需要注意的是,以上方式都是遍历Map中的键值对,如果只需要遍历Map中的键或值,也可以使用keySet()或values()方法来获取相应的集合,然后使用迭代器或Stream API遍历它们。

二. 计算Java中所有Map值的总和

可以使用 values() 方法。现在任务简化为汇总集合中的所有值。这可以在 Java 中以多种方式完成:

1. 使用 Java 8

在 Java 8 或更高版本中,可以使用 Streams 轻松完成求和运算,而无需任何循环。

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

public class Main{
    public static void main(String[] args){
        Map<String, Integer> persons = new HashMap<>();
        persons.put("John", 25);
        persons.put("Neil", 15);
        persons.put("Rosy", 18);

        int sum = persons.values().stream().mapToInt(Integer::intValue).sum();

        System.out.println(sum);        // 58
    }
}

还可以使用 reduce() 方法。

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

public class Main
{
    public static void main(String[] args)
    {
        Map<String, Integer> persons = new HashMap<>();

        persons.put("John", 25);
        persons.put("Neil", 15);
        persons.put("Rosy", 18);

        int sum = persons.values().stream().reduce(0, Integer::sum);

        System.out.println(sum);        // 58
    }
}

2. 使用for循环

在 Java 8 之前,我们可以使用简单的 for 循环替换 Stream API 链:

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

public class Main{
    public static void main(String[] args){
        Map<String, Integer> persons = new HashMap<>();
        persons.put("John", 25);
        persons.put("Neil", 15);
        persons.put("Rosy", 18);

        int sum = 0;
        for (int value: persons.values()) {
            sum += value;
        }

        System.out.println(sum);        // 58
    }
}

这就是计算 a 中所有值的总和 Map<?, Integer> 在Java。

更新:2023-08-19
点击评论
评论区