我创建了一个哈希映射,我需要存储两个对应一个键的不同值。使用
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之前。
答案 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
此处TreeMap
和TreeMap<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
我希望这是你想要实现的目标。