根据Java中的值对HashMap进行排序

我们知道Java中的Hash映射既不按键也不按顺序维护插入顺序,在向其添加条目时也不维护其他顺序。

现在,为了根据映射到其对应键的值对哈希映射表进行排序,我们首先需要考虑到哈希映射表仅具有唯一值的情况下获取映射表的所有值,现在将所有值放入列表中并使用比较器对该列表进行排序或类似的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}