[Java]Map(マップ)のvalueの合計値を取得するには?

Java

どうも、ちょげ(@chogetarou)です。

Map(マップ)のvalueの合計値を取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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ループを使う方法

コメント

タイトルとURLをコピーしました