[英]Sort Hash map in descending order by value. Having two different values to one key
我創建了一個哈希映射,我需要存儲兩個對應一個鍵的不同值。 運用
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);
在打印地圖的值時,我得到類似的輸出{1235567 = [1100.00,100],1256689 = [1300.00,100]}
現在我想在價格的基礎上按降序對這個哈希映射進行排序,即鍵值和1300.00的值應該在1100.00之前。
考慮到正在構建HashMap<String, List<Double>>
,每個條目都有String
參數,表示movieId
為key
, List<Double>
參數為包含movies.getPrice()
value
,因為它是第一個條目和movies.getSeat()
作為它的第二個條目,您可以創建一個TreeMap<String, List<Double>>
有Comparator
和舊的所有條目添加map
到它為了讓您的舊的排序版本的map
基礎上, 電影價格 。 TreeMap
構造可以像這樣完成:
Java 8方式:
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
和o2
是String
鍵。
Java 7方式:
TreeMap<String, List<Double>> priceSortedMap = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String 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);
我希望這是你想要實現的目標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.