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

Map(マップ)の値(value)の平均値を取得する方法は、2つあります。
average()
ひとつは、average()を使う方法です。
まず、Mapからvalues()、values()からstream()を呼び出します。
stream()から引数をそのまま返すラムダ式を指定したmapToDouble()を呼び出します。
そして、mapToDouble()からaverage()、average()からorElse()を呼び出します。
orElse()の引数に、結果がNULLの場合のデフォルト値を指定します。
//map=対象のマップ
double average = map.values()
.stream()
.mapToDouble(a -> a)
.average()
.orElse(default);
上記のorElse()は、対象の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("three", 3);
numbers.put("two", 2);
numbers.put("ten", 10);
numbers.put("eight", 8);
numbers.put("five", 5);
double average = numbers.values()
.stream()
.mapToDouble(a -> a)
.average()
.orElse(0);
System.out.println(average);
}
}
出力:
5.6
合計値
もうひとつは、合計値を使う方法です。
まず、Mapの合計値を取得します。
そして、取得した合計値をMapから呼び出したsize()で割ります。
//map=対象のマップ
//合計値を取得
double sum = 0;
for (int i: map.values()) sum += i;
//平均値を取得
double average = sum / map.size();
上記の割り算は、対象の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("three", 3);
numbers.put("two", 2);
numbers.put("ten", 10);
numbers.put("eight", 8);
numbers.put("five", 5);
double sum = 0;
for (int i: numbers.values()) sum += i;
double average = sum / numbers.size();
System.out.println(average);
}
}
出力:
5.6
まとめ
Map(マップ)の値(value)の平均値を取得する方法は、次の2つです。
- average()を使う方法
double average = map.values() .stream() .mapToDouble(a -> a) .average().orElse(default);
- 合計値を使う方法
double sum = 0;
for (int i: map.values()) sum += i;
double average = sum / map.size();
コメント