Java 8 | Поиск записи карты с наибольшим размером значения

Лично я поклонник XHTML и, как и ghoppe, «я стараюсь никогда не пропускать теги конца, потому что это помогает мне быть строгим и не пропускать теги, которые необходимы».

, но

Если вы намеренно используете HTML 4.n, нельзя утверждать, что включение их облегчает использование документа, поскольку понятие корректности в отличие от действительности является концепцией XML и вы теряете эту выгоду, когда вы запрещаете определенные теги. Таким образом, единственная проблема становится действительной ... и если она по-прежнему остается без них ... вы могли бы также сохранить полосу пропускания, нет?

3
задан P.J.Meisch 21 February 2019 в 05:07
поделиться

2 ответа

Предположим, что если у вас есть список лиц

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
0
ответ дан Deadpool 21 February 2019 в 05:07
поделиться

После получения максимальной записи на карте вы должны преобразовать ее в карту с одной записью. Для этого вы можете использовать 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()) для построения карты с одной записью.

0
ответ дан Ravindra Ranwala 21 February 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: