java 8 List<?>转list<Map>
时间: 2023-11-11 16:06:38 浏览: 128
可以使用 Java 8 提供的 Stream API 和 Lambda 表达式来实现 List<?> 到 List<Map> 的转换。
首先,假设原始的 List<?> 类型为 list,其中每个元素都是一个对象。那么可以使用如下代码将其转换为 List<Map>:
```
List<Map<String, Object>> result = list.stream()
.map(item -> {
Map<String, Object> map = new HashMap<>();
// TODO: 将 item 中的属性值转换为 map 中的键值对
return map;
})
.collect(Collectors.toList());
```
在上述代码中,使用了 Stream API 中的 map() 函数将原始列表中的每个元素映射为一个 Map<String, Object> 对象,然后使用 collect() 函数将所有 Map 对象收集到一个新的列表中。
在 map() 函数中,使用了 Lambda 表达式来处理每个元素。具体来说,对于每个元素,将其转换为一个 Map 对象,其中 Map 的键为属性名,值为属性值。
需要根据实际情况来编写 TODO 部分的代码,将 item 中的属性值转换为 map 中的键值对。其中,可以使用反射来获取 item 中的属性名和属性值。例如,假设 item 是一个 Person 对象,可以使用如下代码将其转换为 Map 对象:
```
Map<String, Object> map = new HashMap<>();
for (Field field : Person.class.getDeclaredFields()) {
field.setAccessible(true);
Object value = field.get(item);
map.put(field.getName(), value);
}
```
在上述代码中,使用了反射来获取 Person 类中的所有属性,然后对每个属性进行访问,并将其转换为一个键值对。需要注意的是,使用反射可能会降低代码的性能,因此在实际应用中需要根据具体情况进行优化。
阅读全文