0
我的要求,我有地圖的列表如何扁平化的地圖列表中的Java 8
[{Men=1},{Men=2, Women=3},{Women=2,Boys=4}]
現在我需要使它成爲一個flatMap,使得它看起來像
Gender=countOfValues
在上面例如輸出將
{Men=3,Women=5,Boys=4}
目前,我有以下代碼:
private Map<String, Long> getGenderMap(
List<Map<String, Long>> genderToCountList) {
Map<String, Long> gendersMap = new HashMap<String, Long>();
Iterator<Map<String, Long>> genderToCountListIterator = genderToCountList
.iterator();
while (genderToCountListIterator.hasNext()) {
Map<String, Long> genderToCount = genderToCountListIterator.next();
Iterator<String> genderToCountIterator = genderToCount.keySet()
.iterator();
while (genderToCountIterator.hasNext()) {
String gender = genderToCountIterator.next();
if (gendersMap.containsKey(gender)) {
Long count = gendersMap.get(gender);
gendersMap.put(gender, count + genderToCount.get(gender));
} else {
gendersMap.put(gender, genderToCount.get(gender));
}
}
}
return gendersMap;
}
我們如何使用lambda表達式使用Java8編寫這段代碼?
你爲什麼使用迭代器和while循環?增強的'for'循環使得它更加簡單,並且自從Java 5以來一直存在,並且自從使用泛型以來顯然在Java 5上運行。 – Andreas
這看起來像很多代碼,希望有人在這裏爲你重寫。你有什麼具體問題嗎?如果是這樣,你應該關注這個問題。 – Brick