我有以下代碼接收物件流,將它們收集到一個帶有鍵和日期值的哈希圖中,該日期值是串列type中每個物件的最大日期。type它按要求作業,但看起來很難看。有沒有辦法進一步簡化這段代碼?對于int物件,我可以使用 acomparingInt但在我的情況下,我有 a LocalDatewhich 沒有等價物。我嘗試了一種groupingBy方法,但沒有奏效。感謝您的任何建議。
import java.time.LocalDate;
import java.util.stream.Stream;
import static java.util.stream.Collectors.toMap;
public class MyClass {
public static class Match {
private final String type;
private final LocalDate day;
public Match(String type, LocalDate day) {
this.type = type;
this.day = day;
}
public String getType() {
return type;
}
public LocalDate getDay() {
return day;
}
}
public static void main(String args[]) {
Stream stream = Stream.of(new Match("A", LocalDate.of(2019, 10,1)), new Match("A", LocalDate.of(2019,5,1)), new Match("A", LocalDate.of(2019,12,1)), new Match("A", LocalDate.of(2019, 1,1)),
new Match("B", LocalDate.of(2018,7,1)), new Match("B", LocalDate.of(2018, 8,1)), new Match("B", LocalDate.of(2018,1,1)),
new Match("C", LocalDate.of(2020,1,1)));
System.out.println(stream.collect(toMap(Match::getType, Match::getDay, (a,b) -> a.isAfter(b) ? a : b)));
}
}
輸出:
{A=2019-12-01, B=2018-08-01, C=2020-01-01}
uj5u.com熱心網友回復:
你可以試試這部分(a,b) -> a.isAfter(b) ? a : b
BinaryOperator.maxBy(LocalDate::compareTo)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/445239.html
標籤:爪哇
