Как отсортировать карту, содержащую карту значений - PullRequest
0 голосов
/ 13 июня 2018

У меня есть структура данных, как показано ниже:

class SKUPriceVO {
    String skuId;
    Map<String, PriceVo> priceMap;
}

class PriceVo {
    String type;
    String skuId;
    double price;
}

Мне нужно отсортировать карту: Map<String, SKUPriceVo> myMap так, как она отсортирована по цене в объекте PriceVo, т. Е.> MyMapупорядочить SKUPriceVo в порядке возрастания или убывания на основе цены в PriceVo.

1 Ответ

0 голосов
/ 13 июня 2018

Вы не можете напрямую отсортировать хэш-карту.Что вам нужно сделать, это переместить данные вашей карты в список и отсортировать этот список по цене.

List<Map.Entry<Integer, PriceVo >> list = new ArrayList<Map.Entry<Integer, PriceVo >>(map.entrySet());

Collections.sort(list, new Comparator<Map.Entry<Integer, PriceVo >>() {
        @Override
        public int compare(Map.Entry<Integer, PriceVo > price1,
                           Map.Entry<Integer, PriceVo > price2) {
            return price1.getValue().price.compareTo(price2.getValue().price);
        }
    }
);

Вы даже можете использовать карту дерева, напрямую передать ему компаратор и отсортировать, так что будетнет необходимости копировать данные в другой список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...