Avatar ·

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 报错...