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)
你可以这样使用.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)