どうも、ちょげ(@chogetarou)です。
Map(マップ)のvalueの合計値を取得する方法を紹介します。
方法

Map(マップ)のvalueの合計値を取得する方法は、3つあります。
stream() + sum()
1つ目は、stream()とsum()を使う方法です。
まず、Mapからvalues()を呼び出します。
values()からstream()、stream()からmapToInt()を呼び出します。
mapToInt()の引数に「Integer::intValue
」を指定します。
そして、mapToInt()からsum()を呼び出します。
int sum = map.values().stream().mapToInt(Integer::intValue).sum();
上記のsum()は、values()を呼び出したMap(マップ)のvalueの合計値を取得します。
使用例
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Map<String, Integer> numbers = new HashMap<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
numbers.put("four", 4);
numbers.put("five", 5);
int sum = numbers.values().stream().mapToInt(Integer::intValue).sum();
System.out.println(sum);
}
}
出力:
15
stream() + reduce()
2つ目は、stream()とreduce()を使う方法です。
まず、Mapからvalues()を呼び出します。
values()からstream()、stream()からreduce()を呼び出します。
そして、reduce()の第1引数に0、第2引数に「Integer::sum
」を指定します。
int sum = map.values().stream().reduce(0, Integer::sum);
上記のreduce()
は、valeus()を呼び出したMap(マップ)のvalueの合計値を取得します。
使用例
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Map<String, Integer> numbers = new HashMap<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
numbers.put("four", 4);
numbers.put("five", 5);
int sum = numbers.values().stream().reduce(0, Integer::sum);
System.out.println(sum);
}
}
出力:
15
forループ
3つ目は、forループを使う方法です。
まず、合計値を格納するための変数を用意します。
次に、Mapのvalues()をforループします。
そして、forループの処理で、ループ変数を用意した変数に足します。
int sum = 0;
for (int value: map.values()) {
sum += value;
}
上記のforループは、valeus()を呼び出したMap(マップ)のvalueの合計値を取得します。
使用例
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Map<String, Integer> numbers = new HashMap<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
numbers.put("four", 4);
numbers.put("five", 5);
int sum = 0;
for (int value: numbers.values()) {
sum += value;
}
System.out.println(sum);
}
}
出力:
15
まとめ
Map(マップ)のvalueの合計値を取得する方法は、次の3つです。
- stream()とsum()を使う方法
int sum = map.values().stream().mapToInt(Integer::intValue).sum();
- reduce()を使う方法
int sum = map.values().stream().reduce(0, Integer::sum);
- forループを使う方法
コメント