java List 转换为 map
时间: 2024-01-21 10:19:06 浏览: 67
可以使用Java 8中的Stream API将List转换为Map。假设你有一个List,其中每个元素都是一个对象,该对象具有一个唯一的标识符和其他属性,你可以按照以下步骤将其转换为Map:
假设Person类具有id和name属性
```java
class Person {
private int id;
private String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```
1. 首先,使用Stream API创建一个流并将其转换为Map。在这里,我们使用id作为键,Person对象作为值。
```java
List<Person> personList = new ArrayList<>();
// 添加元素到personList
Map<Integer, Person> personMap = personList.stream()
.collect(Collectors.toMap(Person::getId, Function.identity()));
```
2. 如果List中的元素可能具有相同的id,则需要使用一个合并函数来解决冲突。在这个例子中,我们使用第一个Person作为值。
```java
Map<Integer, Person> personMap = personList.stream()
.collect(Collectors.toMap(Person::getId, Function.identity(), (existing, replacement) -> existing));
```
这将创建一个Map,其中键是每个Person对象的id,而值是相应的Person对象。如果两个Person具有相同的id,则使用合并函数中的第一个Person作为值。
阅读全文