我有一个需求,其中我有一组映射列表
[{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;
}
我们如何使用Java8的lambda表达式来编写这段代码?
while
循环?增强的for
循环更简单,并且自Java 5以来已经存在,而你显然在使用泛型,因此你也是在使用Java 5。 - Andreas