Java8 Collectors.groupingBy - PullRequest
       39

Java8 Collectors.groupingBy

0 голосов
/ 12 октября 2018

Я хочу сгруппировать коллекцию на основе LocalDateTime, но я хочу получить только час, а не минуты, секунды ...

.collect(Collectors.groupingBy(cp -> getUpdateLocalDate())


public LocalDate getUpdateLocalDate() {
    return getUpdateDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}

, но мне также нужна дата, что-то вроде:2018-10-12T09:00:00, не только час

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Как сказал Aomine , LocalDate не содержит никакой временной информации, поэтому вы должны изменить метод, чтобы вместо него возвращалось LocalDateTime.

public LocalDateTime getUpdateLocalDateTime() {
    return getUpdateDate().toInstant()
        .atZone(ZoneId.systemDefault()).toLocalDateTime();
}

Затем вы можете выполнить свою операцию как

.collect(Collectors.groupingBy(cp ->
    cp.getUpdateLocalDateTime().truncatedTo(ChronoUnit.HOURS))
0 голосов
/ 12 октября 2018

обратите внимание, что LocalDate не имеет часового пояса.вместо этого верните метод LocalDateTime из метода getUpdateLocalDate (возможно, его также стоит переименовать), а затем обрежьте экземпляр LocalDateTime.

 .collect(Collectors.groupingBy(cp -> cp.getUpdateLocalDateTime().truncatedTo(ChronoUnit.HOURS));
...