# Java 程序：按值对映射进行排序

> 原文： [https://www.programiz.com/java-programming/examples/sort-map-values](https://www.programiz.com/java-programming/examples/sort-map-values)

#### 在此程序中，您将学习按 Java 中的值对给定的映射进行排序。

## 示例：按值对映射排序

```java
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;
    }
}
```

运行该程序时，输出为：

```java
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()`方法，我们遍历映射中的每个项目并打印其键和值。