簡體   English   中英

按值按降序對哈希映射進行排序。 對一個鍵有兩個不同的值

[英]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參數,表示movieIdkeyList<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);

這里o1o2String鍵。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM