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;
}
Как написать этот фрагмент кода с использованием Java8 с использованием лямбда-выражений?
Почему вы используете итераторы и циклы 'while'? Улучшенный цикл 'for' делает это намного проще и работает со времен Java 5, и вы, очевидно, на Java 5, поскольку используете дженерики. – Andreas
Это похоже на много кода, чтобы ожидать, что кто-то здесь перепишет для вас. У вас есть какая-то конкретная проблема? Если это так, вы должны сосредоточить внимание на этой проблеме. – Brick