按 Java 中的值對 HashMap 進行排序


眾所周知,Java 中的雜湊對映既不按鍵也不按順序維護插入順序。在向其中新增條目時,它也不會維護任何其他順序。

現在,為了根據對映到其相應鍵的值對雜湊對映進行排序,我們首先需要獲取所有對映值,前提是該雜湊對映僅具有唯一值。現在,將所有值放入一個列表並使用 Java 的比較器或可比較介面對其進行排序。

當我們獲得已排序的唯一值列表後,現在可從對映中獲取相應的鍵,並將值鍵對放入新的樹對映中,從而再次根據值維護插入順序。插入後,我們將遍歷相同的樹對映,該對映已排序,併成為我們最終的已排序對映。

示例

現場演示

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class HashMapSortByValue {
   public static void main(String[] args) {
      HashMap<String, String> hMap = new HashMap<>();
      LinkedHashMap<String, String> sortedMap = new LinkedHashMap<>();
      ArrayList<String> list = new ArrayList<>();
      hMap.put("5", "Akshay");
      hMap.put("8", "Veer");
      hMap.put("3", "Guang");
      hMap.put("7", "Bakshi");
      hMap.put("2", "TomTom");
      hMap.put("10", "Chang");
      hMap.put("1", "Sandy");
      for (Map.Entry<String, String> entry : hMap.entrySet()) {
         list.add(entry.getValue());
      }
      Collections.sort(list, new Comparator<String>() {
         public int compare(String str, String str1) {
            return (str).compareTo(str1);
         }
      });
      for (String str : list) {
         for (Entry<String, String> entry : hMap.entrySet()) {
            if (entry.getValue().equals(str)) {
               sortedMap.put(entry.getKey(), str);
            }
         }
      }
      System.out.println(sortedMap);
   }
}

輸出

{5 = Akshay, 7 = Bakshi, 10 = Chang, 3 = Guang, 1 = Sandy, 2 = TomTom, 8 = Veer}

更新於:2019-07-30

562 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.