Java代码List 转map
时间: 2023-03-14 18:54:17 浏览: 57
你可以使用 Java 8 中的 Stream API 来将 List 转换为 Map。
例如,假设你有一个类 Person,其中包含名字和年龄两个属性,并且你有一个 List<Person> 列表,你希望将列表中的每个人的名字作为键,年龄作为值,转换为 Map。你可以使用以下代码实现:
```
List<Person> list = // ...
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
```
在这里,我们使用 Stream API 的 collect 方法,并将 Collectors.toMap 作为参数传递。我们使用 Person 类的 getName 和 getAge 方法作为函数参数,以提取每个 Person 对象的名字和年龄作为 Map 的键和值。
还有一点要注意的是,如果列表中有多个 Person 对象具有相同的名字,那么在转换为 Map 时,只会保留最后一个 Person 对象的信息。如果你希望保留所有的信息,你可以使用 Collectors.toMap 方法的重载版本,其中提供了一个函数来解决冲突。例如:
```
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge, (age1, age2) -> age1 + age2));
```
在这里,我们提供了一个函数 (age1, age2) -> age1 + age2,用于解决名字冲突时合并两个 Person 对象的年龄。