# Java 程序：将映射（`HashMap`）转换为列表

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

#### 在该程序中，您将学习将 Java 映射转换为列表的各种技巧。

## 示例 1：将映射转换为列表

```java
import java.util.*;

public class MapList {

    public static void main(String[] args) {

        Map<Integer, String> map = new HashMap<>();
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        map.put(4, "d");
        map.put(5, "e");

        List<Integer> keyList = new ArrayList(map.keySet());
        List<String> valueList = new ArrayList(map.values());

        System.out.println("Key List: " + keyList);
        System.out.println("Value List: " + valueList);

    }
}
```

运行该程序时，输出为：

```java
Key List: [1, 2, 3, 4, 5]
Value List: [a, b, c, d, e]
```

在上面的程序中，我们有一个名为`map`的整数到字符串的映射。 由于`map`包含**键值**对，因此我们需要两个列表来存储它们，分别是`keyList`（用于键）和`valueList`（用于值）。 

我们使用`map`的`keySet()`方法获取所有键，并从中创建了一个`ArrayList` `keyList`。 同样，我们使用`map`的`values()`方法来获取所有值，并从中创建一个`ArrayList` `valueList`。

* * *

## 示例 2：使用流将映射转换为列表

```java
import java.util.*;
import java.util.stream.Collectors;

public class MapList {

    public static void main(String[] args) {

        Map<Integer, String> map = new HashMap<>();
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        map.put(4, "d");
        map.put(5, "e");

        List<Integer> keyList = map.keySet().stream().collect(Collectors.toList());
        List<String> valueList = map.values().stream().collect(Collectors.toList());

        System.out.println("Key List: " + keyList);
        System.out.println("Value List: " + valueList);

    }
}
```

该程序的输出与示例 1 相同。

在上面的程序中，我们没有使用`ArrayList`构造器，而是使用`stream()`将映射转换为列表。

我们已经通过传递`Collectors`的`toList()`作为参数的`collect()`方法将键和值转换为流，并将其转换为列表。