У меня есть модель Person [город, имя].Я собрал их в карту и сгруппировал их по городам.Мне нужно отследить город, в котором больше всего нет людей, и вернуть только эту запись как часть карты.Я пытался, и это тоже работает, но мне было интересно, есть ли лучший способ сделать.
Comparator<Entry<String, List<Person>>> compareByCityPopulation =
Comparator.comparing(Entry<String, List<Person>>::getValue, (s1, s2) -> {
return s1.size() - s2.size();
});
HashMap mapOfMostPopulatedCity = persons.stream()
.collect(Collectors.collectingAndThen(Collectors.groupingBy(Person::getCity), m -> {
Entry<String, List<Person>> found = m.entrySet().stream().max(compareByCityPopulation).get();
HashMap<String, List<Person>> hMap = new HashMap<>();
hMap.put(found.getKey(), found.getValue());
return hMap;
}));
System.out.println("*City with Most no of people*");
mapOfMostPopulatedCity.forEach((place, peopleDetail) -> System.out.println("Places " + place + "-people detail-" + peopleDetail));
Подскажите, пожалуйста, как мы можем писать лучше в java 8.