У меня есть класс с именем Street
, и у него есть свойство типа House
, и у него есть свойство типа Room
.
class Street{
private House house;
// getters & setters
}
House
У класса есть свойство Room
:
class House {
private Room room;
// getters & setters
}
Room
класс имеет свойство roomCapacity:
class Room {
private double roomCapacity;
// getters & setters
}
Я хочу отсортировать Street
HashMap из House
HashMap на основе Room
свойства класса с именем roomCapacity.
Значит, каждая улица должна была отсортировать дом по вместимости комнаты.
Map<Street, Map<Long, House>> streetMapFromDB = map;
Map<Street, Map<Long, House>> streetMap =null;
Comparator<Room> orderByRoomCapacity = Comparator.nullsLast(Comparator.comparing(Room::getRoomCapacity, Comparator.nullsLast(Comparator.reverseOrder())));
streetMap = Collections.synchronizedMap(streetMapFromDB.values().stream().map(
m -> m.entrySet().stream().sorted(Map.Entry.<String, House> comparingByValue(orderByRoomCapacity ))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new)))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
Но я получаю ошибку: type Map.Entry does not define getValue(LinkedHashMap<String,House>)
Формат данных:
//streetMap={Street={House={RoomCapacity}},{House={RoomCapacity}}}
streetMapFromDB={1={11={4}),2={12={7}}}