Сравните два объекта по полю их поля - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть класс с именем House, и у него есть свойство типа Room.

class House {
   private Room room;
   // getters & setters
}

Room класс имеет свойство roomCapacity:

class Room {
   private double roomCapacity;
   // getters & setters
}

Я хочу отсортировать House HashMap на основе свойства класса Room с именем roomCapacity.

Comparator<House> sortByRoomCapacity =
      Comparator.nullsFirst(Comparator.comparing(House::getRoom,
                   Comparator.nullsFirst(Comparator.naturalOrder())));

Но сейчас я не могу получить это свойство (getRoomCapacity) класса комнаты Дом :: getRoom

1 Ответ

3 голосов
/ 07 апреля 2020

Вы почти у цели.

Еще один вложенный comparing метод должен сработать:

Comparator<House> sortByRoomCapacity =
         nullsFirst(comparing(House::getRoom, 
                              comparing(Room::getRoomCapacity, 
                                        nullsFirst(naturalOrder()))));
...