List一个实体, 转换成Map, key是字段A, value是这个实体
时间: 2024-02-18 14:01:50 浏览: 65
假设实体为Person,字段A为id,Java代码示例如下:
```java
Person person = new Person();
person.setId(1);
Map<Integer, Person> map = new HashMap<>();
map.put(person.getId(), person);
```
其中,Person类需要实现getter和setter方法。
相关问题
已有的一个List实体转化成Map, key是字段A, value是这个实体
假设实体为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 = new HashMap<>();
for (Person person : personList) {
map.put(person.getId(), person);
}
```
其中,Person类需要实现getter和setter方法。
已有的一个List实体转化成Map, key是字段A, value是这个实体. 用Collectors.toMap去完成
假设实体为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。
阅读全文