Лично я поклонник XHTML и, как и ghoppe, «я стараюсь никогда не пропускать теги конца, потому что это помогает мне быть строгим и не пропускать теги, которые необходимы».
, но
Если вы намеренно используете HTML 4.n, нельзя утверждать, что включение их облегчает использование документа, поскольку понятие корректности в отличие от действительности является концепцией XML и вы теряете эту выгоду, когда вы запрещаете определенные теги. Таким образом, единственная проблема становится действительной ... и если она по-прежнему остается без них ... вы могли бы также сохранить полосу пропускания, нет?
Предположим, что если у вас есть список лиц
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
После получения максимальной записи на карте вы должны преобразовать ее в карту с одной записью. Для этого вы можете использовать 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())
для построения карты с одной записью.