📝
最新日付のオブジェクトを取り出すコードをコピペしたくなかった
OSS探せばありそうだけど重いパッケージを導入したくないシリーズです。
これを読んだ人に確認してもらうためにCodePenあたりを使うのもいいかなぁ・・・
使い方
import lombok.*;
import java.util.*;
@AllArgsConstructor
@Data
class C {
private long created;
}
// Date直接でも動きます、がDateの差分はコードが煩雑になるので割愛
var time = new Date().getTime();
var list = new ArrayList<>() {{
add(new C(time));
add(new C(time + 1L));
}};
extractLatest(list, (l) -> l.getCreated());
API
import java.util.*;
public <T> T extractLatest(List<T> list, Function<T, Date> dateExtractor) {
var latest = list.stream()
.map(l -> dateExtractor.apply(l))
.max(Comparator.naturalOrder()).orElse(null);
return list.stream().filter(l -> dateExtractor.apply(l).equals(latest)).findFirst().orElse(null);
}
Discussion