Как отсортировать карту объекта по дате - PullRequest
0 голосов
/ 07 октября 2018

Как отсортировать карту на основе поля времени в объекте.Моя карта выглядит так:

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?

1 Ответ

0 голосов
/ 07 октября 2018

Вам просто нужно изменить компаратор в методе sorted.Вы можете использовать следующий компаратор:

(entry1, entry2) -> entry1.getValue().shiftStartTime.compareTo(entry2.getValue().shiftStartTime)

Или вы можете использовать TreeMap и передать этот компаратор его конструктору при создании карты.

...