按值按降序对哈希映射进行排序。对一个键有两个不同的值

时间:2016-12-08 08:36:01

标签: java hashmap

我创建了一个哈希映射,我需要存储两个对应一个键的不同值。使用

final Map<String, List<Double>> map = new HashMap<String, List<Double>>();
final List<Double> valSetOne = new ArrayList<Double>();
for(int i=0;i<100;i++)
{
    valSetOne.add(movies.getPrice());
    valSetOne.add(movies.getSeat());
    map.put(movies.getId, valSetOne);
}
System.out.println(map);

在打印地图I的值时,输出的内容如下{1235567 = [1100.00,100],1256689 = [1300.00,100]}

现在我想根据价格按键降序对这个哈希映射进行排序,键值1300.00应该在1100.00之前。

1 个答案:

答案 0 :(得分:0)

考虑到您正在为每个条目正确构建HashMap<String, List<Double>>,其中String参数代表您的movieId key 和{{1 }}参数为 List<Double> ,其中包含value作为第一个条目,而movies.getPrice()作为第二个条目,您可以使用{创建movies.getSeat() {1}}并将旧版TreeMap<String, List<Double>>的所有条目添加到其中,以便根据电影价格获取旧版Comparator的已排序版本。 map构造可以这样做:

Java 8方式:

map

此处TreeMapTreeMap<String, List<Double>> priceSortedMap = new TreeMap<>((o1, o2) ->{ //get first entry (movie price) of list and compare. if(map.get(o1).get(0) <= map.get(o2).get(0)){ return 1; } return -1; }); // put all entries from old map to new priceSortedMap.putAll(map); o1键。

Java 7方式:

o2

我希望这是你想要实现的目标。