recipeBrkdownInfoList.stream() 转成根据p_parent字段做主键的map
时间: 2024-11-03 14:18:13 浏览: 15
在Java中,如果有一个`recipeBrkdownInfoList`列表,其中包含对象具有`p_parent`字段,你想将这些对象转化为一个Map,该Map的键是每个对象的`p_parent`值,值是一个子Map或List(取决于你希望如何组织数据)。你可以使用Java 8的Stream API来实现这个转换。以下是一个示例:
```java
Map<Long, Map<Long, RecipeBreakdownInfo>> map = recipeBrkdownInfoList.stream()
.collect(Collectors.groupingBy(recipe -> recipe.getP_parent(), // 使用p_parent作为key
Collectors.mapping(recipe -> recipe, // 对于每一个元素,创建一个新的Map,键是它本身
Collectors.toMap(RecipeBreakdownInfo::getId, // 使用id作为内部Map的键
identity())))); // 将RecipeBreakdownInfo对象本身作为值
```
这里,`Collectors.groupingBy`用于根据`p_parent`字段对元素进行分组,然后`Collectors.mapping`将每个父级元素映射到一个子Map,`recipe.getId()`作为子Map中的键,`identity()`作为收集器则返回原对象(假设`RecipeBreakdownInfo`有一个`getId()`方法获取唯一标识)。
阅读全文