我有地圖格式在地圖對象計算平均多個號碼
Map<String, List<TableDTO>>
public class TableDTO {
private String countryName;
private String sourceName;
private int year;
private Double usageValue;
private Double powerUsers;
//Setter & Getters
}
我想找到usageValues和超級用戶的平均水平,仍維持TableDTO結構和usageValue可以爲空,如果它完全忽略該對象。
<Chrome, <UK, Lorem, 2013, 2.90, 5.4>>
<Chrome, <US, Lorem, 2013, 4.10, 1.5>>
<Chrome, <EU, Lorem, 2013, 1.20, 0.22>>
<Chrome, <Asia, Lorem, 2013, 3.90, -1.10>>
<IE, <UK, Lorem, 2013, 1.40, 24.4>>
<IE, <US, Lorem, 2013, 0.90, 14.4>>
<IE, <EU, Lorem, 2013, 2.10, 0>>
<IE, <Asia, Lorem, 2013, 0.90, 0.4>>
<FF, <UK, Lorem, 2013, 0.10, 2.14>>
<FF, <US, Lorem, 2013, 1.10, 4.0>>
<FF, <EU, Lorem, 2013, , 4.4>>
<FF, <Asia, Lorem, 2013, 2.90, 4.4>>
結果預計
<1, <UK, Lorem, 2013, 1.47, 10.65>>
<2, <US, Lorem, 2013, 2.03, 6.63>>
<3, <Asia, Lorem, 2013, 2.57, 1.23>>
現在的結果我更換了指數,這是很好的,現在的關鍵。你會注意到,由於對歐盟的FF值爲零,整個歐盟都被忽略了,但其餘的我的平均值被計算出來。
這又如何在Java中使用8 Lambda表達式來完成,或者我必須遍歷?
更新1: 這是據我得到了現在:
1.
Map<String, List<TableDTO>> dump = mapOfAllData.values()
.stream()
.flatMap(list -> list.stream())
.collect(Collectors.groupingBy(TableDTO::getCountryName));
Which give me a map with country names and the DTO orderd
2.
dump.values().stream().flatMap(list -> list.stream())
.filter((o -> !o.getUsageValue().isEmpty()))
.collect(Collectors.mapping(TableDTO::getUsageValue, Collectors.averagingDouble(Double::parseDouble)));
基本上得到了平均水平,但不會刪除DTO其中usageValue是空的,這我在努力該解決的時刻。
更新2:
我設法從我的地圖中刪除不需要的國家。
我試圖找出如何找到兩個元素的平均,我有這樣的表達
newMap.values().stream().flatMap(list -> list.stream())
.collect(Collectors.mapping(TableDTO::usageValue, Collectors.averagingDouble(s -> s.isEmpty() ? Double.NaN : Double.parseDouble(s))));
// Collectors.mapping(TableDTO::powerUsers, Collectors.averagingDouble(c -> c.isEmpty() ? Double.NaN : Double.parseDouble(c))));
但我無法得到平均超級用戶。
這與您之前的問題類似 - 如果您顯示了您的代碼以及哪些代碼不起作用,則會更容易。 – assylias 2014-09-22 12:52:30
@assylias,說實話,我還沒有解決它,我的問題是,我沒有任何導師幫助我學習Java本身,所以我更依賴論壇和Javadocs – victor 2014-09-22 13:02:34
@victor:特別是如果你想要學習,你應該嘗試先自己解決問題。在這裏問幾乎相同的問題表明沒有太多的學習成功,並表明你應該質疑你的學習方法。 – Holger 2014-09-22 13:36:38