原文: https://www.programiz.com/java-programming/examples/sort-map-values
import java.util.*;
public class SortMap {
public static void main(String[] args) {
LinkedHashMap<String, String> capitals = new LinkedHashMap<>();
capitals.put("Nepal", "Kathmandu");
capitals.put("India", "New Delhi");
capitals.put("United States", "Washington");
capitals.put("England", "London");
capitals.put("Australia", "Canberra");
Map<String, String> result = sortMap(capitals);
for (Map.Entry<String, String> entry : result.entrySet())
{
System.out.print("Key: " + entry.getKey());
System.out.println(" Value: " + entry.getValue());
}
}
public static LinkedHashMap<String, String> sortMap(LinkedHashMap<String, String> map) {
List<Map.Entry<String, String>> capitalList = new LinkedList<>(map.entrySet());
Collections.sort(capitalList, (o1, o2) -> o1.getValue().compareTo(o2.getValue()));
LinkedHashMap<String, String> result = new LinkedHashMap<>();
for (Map.Entry<String, String> entry : capitalList)
{
result.put(entry.getKey(), entry.getValue());
}
return result;
}
}
运行该程序时,输出为:
Key: Australia Value: Canberra
Key: Nepal Value: Kathmandu
Key: England Value: London
Key: India Value: New Delhi
Key: United States Value: Washington
在上述程序中,我们将LinkedHashMap
和国家/地区及其各自的首都存储在变量capitalList
中。
我们有一种方法sortMap()
,它采用链接的哈希映射并返回排序后的链接的哈希映射。
在该方法内部,我们将哈希映射转换为列表capitalList
。 然后,我们使用sort()
方法获取一个列表和一个比较器。
在我们的情况下,比较器是 lambda,(o1, o2) -> o1.getValue().compareTo(o2.getValue())
,它对o1
和o2
列表中两个项目的值进行比较。
操作后,我们得到排序列表capitalList
。 然后,我们只需将列表转换为LinkedHashMap
结果并返回即可。
回到main()
方法,我们遍历映射中的每个项目并打印其键和值。