Java 8: 使用 Stream API 将 List<V> 转换为 Map<K, V>
大家好!我开始学习 Java 8,遇到了一个看似简单但无法解决的问题。我有一个 `Person` 对象列表:
```java
public class Person {
private int id;
private String name;
private int age;
// 构造器、getter 和 setter
}
```
我需要将 `List` 转换为 `Map`,其中键是 `id`,值是 `Person` 对象本身。以前(在 Java 8 之前),我通过循环来实现:
```java
List list = Arrays.asList(
new Person(1, "Alice", 30),
new Person(2, "Bob", 25),
new Person(3, "Charlie", 35)
);
Map map = new HashMap<>();
for (Person p : list) {
map.put(p.getId(), p);
}
```
但我听说在 Java 8 中可以使用 lambda 和 stream 更优雅地实现。我尝试写了类似这样的代码:
```java
Map map = list.stream().collect(Collectors.toMap(person -> person.getId(), person -> person));
```
但 IDE 报错...