2 回答
TA贡献1862条经验 获得超6个赞
获得最大地图条目后,您必须将其转换为具有单个条目的地图。为此,您可以使用Collections.singletonMap()
Map<String, List<Person>> mapOfMostPopulatedCity = persons.stream()
.collect(Collectors.groupingBy(Person::getCity)).entrySet().stream()
.max(Comparator.comparingInt(e -> e.getValue().size()))
.map(e -> Collections.singletonMap(e.getKey(), e.getValue()))
.orElseThrow(IllegalArgumentException::new);
使用 Java9,您可以使用Map.of(e.getKey(), e.getValue())单个条目来构建地图。
TA贡献1805条经验 获得超10个赞
假设如果你有一个人员列表
List<Person> persons = new ArrayList<Person>();
然后首先根据城市对他们进行分组,然后获取列表中具有最大值的条目max将返回Optional,Entry所以我不会让它变得复杂HashMap,如果结果出现在可选中,我将只使用它来存储结果,否则将返回空Map
Map<String, List<Person>> resultMap = new HashMap<>();
persons.stream()
.collect(Collectors.groupingBy(Person::getCity)) //group by city gives Map<String,List<Person>>
.entrySet()
.stream()
.max(Comparator.comparingInt(value->value.getValue().size())) // return the Optional<Entry<String, List<Person>>>
.ifPresent(entry->resultMap.put(entry.getKey(),entry.getValue()));
//finally return resultMap
添加回答
举报