我正在嘗試學習Java 8 Stream以及何時嘗試將某些函數轉換爲java8來練習。我遇到了一個問題。使用Java 8 Stream API合併地圖列表
我很好奇,如何將後續代碼轉換爲java流格式。
/*
* input example:
* [
{
"k1": { "kk1": 1, "kk2": 2},
"k2": {"kk1": 3, "kk2": 4}
}
{
"k1": { "kk1": 10, "kk2": 20},
"k2": {"kk1": 30, "kk2": 40}
}
]
* output:
* {
"k1": { "kk1": 11, "kk2": 22},
"k2": {"kk1": 33, "kk2": 44}
}
*
*
*/
private static Map<String, Map<String, Long>> mergeMapsValue(List<Map<String, Map<String, Long>>> valueList) {
Set<String> keys_1 = valueList.get(0).keySet();
Set<String> keys_2 = valueList.get(0).entrySet().iterator().next().getValue().keySet();
Map<String, Map<String, Long>> result = new HashMap<>();
for (String k1: keys_1) {
result.put(k1, new HashMap<>());
for (String k2: keys_2) {
long total = 0;
for (Map<String, Map<String, Long>> mmap: valueList) {
Map<String, Long> m = mmap.get(k1);
if (m != null && m.get(k2) != null) {
total += m.get(k2);
}
}
result.get(k1).put(k2, total);
}
}
return result;
}
所以所有的地圖都是一樣的 - 即在兩個層次都有相同的密鑰? –
這不是一個代碼翻譯服務。你需要告訴我們你已經試過的東西,這樣我們才能告訴你你做錯了什麼。 – explv
您應該首先重新考慮您的原始方法,即在外部循環中循環的內容以及內部循環中的內容。 – Holger