CreateMap将list<对象>进行映射
时间: 2024-03-15 11:48:01 浏览: 52
您可以使用Java 8中的Stream API和Collectors类来实现这个映射过程。具体的步骤如下:
1. 首先,您需要定义一个Function对象,用于将列表中的每个对象映射到一个键值对。
例如,如果您的对象是一个Person类,其中包含id和name属性,您可以使用以下代码来定义映射函数:
```
Function<Person, Map<String, String>> mapPerson = p -> {
Map<String, String> map = new HashMap<>();
map.put("id", p.getId());
map.put("name", p.getName());
return map;
};
```
这个函数将每个Person对象映射到一个包含id和name属性的Map对象。
2. 接下来,您可以使用Stream API将列表转换为一个包含键值对的Stream对象:
```
List<Person> personList = ... // your list of Person objects
Stream<Map<String, String>> stream = personList.stream().map(mapPerson);
```
这个代码将personList转换为一个Stream对象,并使用map()方法将每个Person对象映射到一个包含id和name属性的Map对象。
3. 最后,您可以使用Collectors类将Stream对象转换为一个包含所有键值对的Map对象:
```
Map<String, Map<String, String>> resultMap = stream.collect(Collectors.toMap(
map -> map.get("id"), // key mapper
map -> map, // value mapper
(map1, map2) -> { // merge function
map1.putAll(map2);
return map1;
}
));
```
这个代码将Stream对象转换为一个Map对象,其中每个键是Person对象的id属性,每个值是一个包含id和name属性的Map对象。注意,我们使用了toMap()方法的三个参数来指定键映射器、值映射器和合并函数。合并函数用于处理在Map对象中出现重复键的情况。在这个例子中,我们将重复的键合并成一个包含所有属性的Map对象。
阅读全文