如何根据日期对对象图进行排序
How to sort map of object on the basis of date
如何根据对象中的时间字段对地图进行排序。我的地图看起来像:
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
对所有班次条目进行排序?
您只需要在 sorted
方法中更改比较器即可。您可以使用以下比较器:
(entry1, entry2) -> entry1.getValue().shiftStartTime.compareTo(entry2.getValue().shiftStartTime)
否则您可以使用 TreeMap
并在创建地图时将此比较器传递给其构造函数。
如何根据对象中的时间字段对地图进行排序。我的地图看起来像:
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
对所有班次条目进行排序?
您只需要在 sorted
方法中更改比较器即可。您可以使用以下比较器:
(entry1, entry2) -> entry1.getValue().shiftStartTime.compareTo(entry2.getValue().shiftStartTime)
否则您可以使用 TreeMap
并在创建地图时将此比较器传递给其构造函数。