按 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