Java流,试图改变地图<;字符串,列表<;T>&燃气轮机;进入地图<;字符串,Map<;字符串,列表<;T>&燃气轮机&燃气轮机;

Java流,试图改变地图<;字符串,列表<;T>&燃气轮机;进入地图<;字符串,Map<;字符串,列表<;T>&燃气轮机&燃气轮机;,java,dictionary,java-stream,Java,Dictionary,Java Stream,因此,我有以下目标: @Data @Builder @NoArgsConstructor @AllArgsConstructor public class StakeHolderTypesDepartmentsNotifications { private StakeholderTypeEntity stakeholderTypeEntity; private StakeholderDepartmentEntity stakeholderDepartmentEntity;

因此,我有以下目标:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StakeHolderTypesDepartmentsNotifications {

    private StakeholderTypeEntity stakeholderTypeEntity;
    private StakeholderDepartmentEntity stakeholderDepartmentEntity;
    private StakeholderEntity stakeholderEntity;
    private StakeholderNotificationEntity stakeholderNotificationEntity;
}
因此,我最初有一个该对象的列表,并将其转换为一个
映射条目。GetStateHolderDepartmentEntity()!=空)
.收集(分组)(
entry->entry.getStateHolderDepartmentEntity().getId());
不过,现在我想提出以下几点:

Map<String, Map<String,List<StakeHolderTypesDepartmentsNotifications>>

Map您可以使用另一个
groupingBy
作为下游收集器来实现它:

Map<String, Map<String, List<StakeHolderTypesDepartmentsNotifications>>> resultMap = 
    stakeholders
            .stream()
            .filter(e -> e.getStakeholderTypeEntity() != null)
            .filter(e -> e.getStakeholderDepartmentEntity() != null)
            .collect(Collectors.groupingBy(
                    e -> e.getStakeholderDepartmentEntity().getId(),
                    Collectors.groupingBy(
                        e -> e.getStakeholderTypeEntity().getId())));
映射结果映射=
利益相关者
.stream()
.filter(e->e.GetStateHolderTypeEntity()!=null)
.filter(e->e.GetStateHolderDepartmentEntity()!=null)
.collect(收集器.groupingBy(
e->e.GetStateHolderDepartmentEntity().getId(),
收集者分组(
e->e.GetStateHolderTypeEntity().getId());

当然,额外检查
getStateHolderTypeEntity()
是否返回
null
可能有意义。

您可以使用另一个
groupingBy
作为下游收集器来实现这一点:

Map<String, Map<String, List<StakeHolderTypesDepartmentsNotifications>>> resultMap = 
    stakeholders
            .stream()
            .filter(e -> e.getStakeholderTypeEntity() != null)
            .filter(e -> e.getStakeholderDepartmentEntity() != null)
            .collect(Collectors.groupingBy(
                    e -> e.getStakeholderDepartmentEntity().getId(),
                    Collectors.groupingBy(
                        e -> e.getStakeholderTypeEntity().getId())));
Map<String, Map<String, List<StakeHolderTypesDepartmentsNotifications>>> result = stakeholders
    .stream()
    .filter(e -> e.getStakeholderTypeEntity() != null && 
                 e.getStakeholderDepartmentEntity() != null)
    .collect(groupingBy(e -> e.getStakeholderTypeEntity().getId(), 
             groupingBy(e -> e.getStakeholderDepartmentEntity().getId())));
    
映射结果映射=
利益相关者
.stream()
.filter(e->e.GetStateHolderTypeEntity()!=null)
.filter(e->e.GetStateHolderDepartmentEntity()!=null)
.collect(收集器.groupingBy(
e->e.GetStateHolderDepartmentEntity().getId(),
收集者分组(
e->e.GetStateHolderTypeEntity().getId());
当然,额外检查
getStakeholderTypeEntity()
是否不返回
null
,可能有意义。

Map result=providers
Map<String, Map<String, List<StakeHolderTypesDepartmentsNotifications>>> result = stakeholders
    .stream()
    .filter(e -> e.getStakeholderTypeEntity() != null && 
                 e.getStakeholderDepartmentEntity() != null)
    .collect(groupingBy(e -> e.getStakeholderTypeEntity().getId(), 
             groupingBy(e -> e.getStakeholderDepartmentEntity().getId())));
    
.stream() .filter(e->e.GetStateHolderTypeEntity()!=null&& e、 getStakeholderDepartmentEntity()!=null) .collect(groupingBy(e->e.GetStateHolderTypeEntity().getId()), 分组方式(e->e.GetStateHolderDepartmentEntity().getId());
映射结果=利益相关者
.stream()
.filter(e->e.GetStateHolderTypeEntity()!=null&&
e、 getStakeholderDepartmentEntity()!=null)
.collect(groupingBy(e->e.GetStateHolderTypeEntity().getId()),
分组方式(e->e.GetStateHolderDepartmentEntity().getId());

您应该能够通过应用
收集器来完成此操作。groupingBy
多次:

映射结果=
利益相关者
.stream()
.filter(entry->Objects.nonNull(entry.getStateHolderTypeEntity())
&&Objects.nonNull(entry.getStateHolderDepartmentEntity())
.收集(
收集者分组(
entry->entry.GetStateHolderTypeEntity().getId(),
收集者分组(
entry->entry.getStateHolderDepartmentEntity().getId()
)
)
);

旁白:重构字段名称以消除冗余的冗长是值得的:

公共类利益相关者类型部门通知{
//只是一个跨所有这些表联接的sql查询模型
私人股东类型实体类型;
私人股东部门实体部门;
私人利益相关者;
私人股东通知实体通知;
}
然后构建地图将如下所示:

映射结果=
利益相关者
.stream()
.filter(entry->Objects.nonNull(entry.getType())&&Objects.nonNull(entry.getDepartment())
.收集(
收集者分组(
entry->entry.getType().getId(),
Collectors.groupingBy(->entry.getDepartment().getId())
)
);

您应该能够通过应用
收集器来完成此操作。groupingBy
多次:

映射结果=
利益相关者
.stream()
.filter(entry->Objects.nonNull(entry.getStateHolderTypeEntity())
&&Objects.nonNull(entry.getStateHolderDepartmentEntity())
.收集(
收集者分组(
entry->entry.GetStateHolderTypeEntity().getId(),
收集者分组(
entry->entry.getStateHolderDepartmentEntity().getId()
)
)
);

旁白:重构字段名称以消除冗余的冗长是值得的:

公共类利益相关者类型部门通知{
//只是一个跨所有这些表联接的sql查询模型
私人股东类型实体类型;
私人股东部门实体部门;
私人利益相关者;
私人股东通知实体通知;
}
然后构建地图将如下所示:

映射结果=
利益相关者
.stream()
.filter(entry->Objects.nonNull(entry.getType())&&Objects.nonNull(entry.getDepartment())
.收集(
收集者分组(
entry->entry.getType().getId(),
Collectors.groupingBy(->entry.getDepartment().getId())
)
);

我不理解这个问题,您想通过java stream将以前的
Map
更改为新的
Map
?或者您想通过流式处理以前的
Map
来创建新的
Map
?我不理解这个问题,您想通过java流将以前的
Map
更改为新的
Map
?或者,是否要通过流式处理以前的
映射
来创建新的
映射