已有的一个List实体转化成Map, key是字段A, value是这个实体. 用Collectors.toMap去完成
时间: 2024-02-18 21:01:54 浏览: 104
Java三种方法将List转换为Map的实例
假设实体为Person,字段A为id,Java代码示例如下:
```java
List<Person> personList = new ArrayList<>();
Person person1 = new Person();
person1.setId(1);
personList.add(person1);
Person person2 = new Person();
person2.setId(2);
personList.add(person2);
Map<Integer, Person> map = personList.stream().collect(Collectors.toMap(Person::getId, person -> person));
```
其中,Person类需要实现getter和setter方法。使用`Collectors.toMap`方法需要注意,如果List中存在相同的key,会抛出`IllegalStateException`异常。可以通过提供第三个参数来解决这个问题,例如:
```java
Map<Integer, Person> map = personList.stream().collect(Collectors.toMap(Person::getId, person -> person, (existing, replacement) -> existing));
```
这里提供了一个合并函数,当出现相同的key时,使用已有的Person实体作为value。
阅读全文