我的数据结构如下:
class SKUPriceVO {
String skuId;
Map<String, PriceVo> priceMap;
}
class PriceVo {
String type;
String skuId;
double price;
}
我需要排序的 map 是:
Map<String, SKUPriceVo>
myMap 按照 PriceVo 对象中的价格排序,即> myMap 应该根据 PriceVo 中的价格将 SKUPriceVo 按升序或降序排列。
最佳答案
您不能直接对 HashMap 进行排序。您需要做的是将 map 数据移动到列表并根据价格对该列表进行排序。
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);
}
}
);
您甚至可以使用 Treemap 并直接向其传递 Comparator 并排序,因此无需复制其他列表中的数据。
关于java - 如何对包含值映射的映射进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50828927/