2017-04-23 3 views
2

私はStringキーと値としてDoubleList、このデータを保持してハッシュマップMap<String,List<Double>> incomeList持っている:私は最終的な結果は次のようになるように、新しいHashMapに都市とその平均所得を保存したい
Streamsを使用してリストのマップの平均値を取得する方法は?

seattle [50000.0 40000.0 30000.0] 
sanFrancisco [60000.0 100000.0] 

を:

seattle 40000.0 
sanFrancisco 80000.0 

私はこのマップを作成するには、このコードを使用しています:

Map<String,Double> avarage = incomeList.entrySet().stream() 
     .map(e -> e.getValue().stream().mapToDouble(Double::doubleValue).average()) 
     .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); 

が、私はこのエラーを取得しています:

非静的メソッド静的コンテキストから参照することはできませんが

誰もが、私はこれがStream Sを使って仕事を得ることができる方法の手掛かりを持っていますか?

+1

'map'後ストリームホールドを何? 'Entry'インスタンスではないので、' Entry :: getKey'と 'Entry :: getValue'は動作しません。 – luk2302

答えて

3

出力Mapにそれを収集するときは、平均に元の値(List<Double>)をマップする必要があります

Map<String,Double> avarage = 
    incomeList.entrySet() 
       .stream() 
       .collect(Collectors.toMap(Map.Entry::getKey, 
             e-> e.getValue() 
              .stream() 
              .mapToDouble(Double::doubleValue) 
              .average() 
              .getAsDouble()));