如何根据对象中的时间字段对地图进行排序。我的地图如下:
Map<Integer, ShiftDTO> -> ShiftDTO
由以下键组成:shiftName
,shiftStartTime
,shiftEndTime
。 shiftStartTime
的类型为Date
,我想根据日期以升序排序。以下代码是我用来根据地图关键字进行排序的代码:
LinkedHashMap<Integer, ShiftDTO> sortedMap = new LinkedHashMap<Integer, ShiftDTO>();
v.getShiftHashMap().entrySet().stream().sorted(Map.Entry.comparingByKey())
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
但是我如何基于shiftStartTime
对所有班次条目进行排序?
答案 0 :(得分:1)
您只需要在create
方法中更改比较器。您可以使用以下比较器:
sorted
否则,您可以使用(entry1, entry2) -> entry1.getValue().shiftStartTime.compareTo(entry2.getValue().shiftStartTime)
并在创建地图时将此比较器传递给其构造函数。