📝

最新日付のオブジェクトを取り出すコードをコピペしたくなかった

2023/03/28に公開

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