Stream从列表中创建一个,将String每个映射Stream到YearMonthusing a DateTimeFormatter,对Streamusing进行排序,将Stream 的Comparator#reverseOrder每个元素映射到using the same ,最后将其收集到 a 中。YearMonthStringDateTimeFormatterStreamList<String>
演示:
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
public class Main {
public static void main(String args[]) {
List<String> list = List.of("12-2014", "11-2012", "5-2014", "8-2012");
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("M-uuuu", Locale.ENGLISH);
List<String> sorted =
list.stream()
.map(s -> YearMonth.parse(s, dtf))
.sorted(Comparator.reverseOrder())
.map(ym -> dtf.format(ym))
.collect(Collectors.toList());
// Display the list
System.out.println(sorted);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
[12-2014, 5-2014, 11-2012, 8-2012]
Run Code Online (Sandbox Code Playgroud)
从Trail: Date Time了解有关现代日期时间 API *的更多信息。
* 如果您正在从事 Android 项目,并且您的 Android API 级别仍然不符合 Java-8,请通过 desugaring 检查可用的 Java 8+ API。请注意,Android 8.0 Oreo 已提供对java.time.