按 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}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP