按 LocalDateTime 对流中的地图进行排序

1 java sorting java-8 java-stream java-time

我有地图Map<LocalDateTime, String>

如何按键值对其进行排序?我应该使用什么比较器?

someMap.entrySet().stream().sorted(Comparator.comparing(???))
Run Code Online (Sandbox Code Playgroud)

或者

someMap.entrySet().stream().sorted(??)
Run Code Online (Sandbox Code Playgroud)

我该如何解决?我应该写什么来代替“??” ?

排序:

Key                      Value
2020-01-09 09:57:58.631  Some info
2020-01-09 09:57:59.224  Some info
2020-01-09 09:59:03.144  Info
Run Code Online (Sandbox Code Playgroud)

不排序:

Key                     Value
2020-01-09 09:57:58.631  Some info
2020-01-09 09:59:03.144  Info
2020-01-09 09:57:59.224  Some info
Run Code Online (Sandbox Code Playgroud)

YCF*_*F_L 5

你可以这样使用.sorted(Map.Entry.comparingByKey())

Map<LocalDateTime, String> collect = someMap.entrySet().stream()
        .sorted(Map.Entry.comparingByKey())
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (o1, o2) -> o1, LinkedHashMap::new));
Run Code Online (Sandbox Code Playgroud)

输出

{2020-04-01T12:27:48.054=info, 2020-04-17T11:15:13.423=info, 2020-04-29T11:01:21.372=info}
Run Code Online (Sandbox Code Playgroud)

  • 不知道`Map.Entry.comparingByKey()`。好一个! (3认同)