Javaのラムダを時間でソートする方法はどうやって実装しますか?
Javaには、リストや配列をソートするためにLambda式を使用することができます。時間順に並べ替えるためには、比較ルールを定義するためにComparatorインタフェースを使用する必要があります。
timesというLocalDateTimeのリストがあり、以下の方法で並べ替えることができます。
// 导入相关的类
import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.List;
// 排序列表
times.sort(Comparator.naturalOrder());
リストは自然な時間の順序に従って昇順に並べ替えられます。降順に並べ替える場合は、次のコードを使用できます。
times.sort(Comparator.reverseOrder());
リスト内の要素がLocalDateTimeの型ではなく、他の型(例:時間を表す文字列)の場合は、DateTimeFormatterを使用してLocalDateTimeの型に変換し、その後にソートを行うことができます。例えば:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
import java.util.List;
// 排序列表
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
List<String> times = Arrays.asList("2022-01-01 10:30:00", "2022-01-01 09:00:00", "2022-01-01 12:15:00");
times.sort(Comparator.comparing(time -> LocalDateTime.parse(time, formatter)));
指定された時間形式に従って、文字列の時間をLocalDateTime型に変換し、リストを時間順に並べ替えます。
上記の例は、Java 8以上のコードにのみ適用されます。