多层for 循环优化方法 demo

160 阅读1分钟
public List<AclModuleLevelDto> roleTree(int roleId) {  
    // 1、当前用户已分配的权限点  
    List<SysAcl> userAclList = sysCoreService.getCurrentUserAclList();  
    // 2、当前角色分配的权限点  
    List<SysAcl> roleAclList = sysCoreService.getRoleAclList(roleId);  
    // 3、当前系统所有权限点  
    List<AclDto> aclDtoList = Lists.newArrayList();  
  
    Set<Integer> userAclIdSet = userAclList.stream().map(sysAcl -> sysAcl.getId()).collect(Collectors.toSet());  
    Set<Integer> roleAclIdSet = roleAclList.stream().map(sysAcl -> sysAcl.getId()).collect(Collectors.toSet());  
  
    List<SysAcl> allAclList = sysAclMapper.getAll();  
    for (SysAcl acl : allAclList) {  
        AclDto dto = AclDto.adapt(acl);  
       //  避免多才层for循环  
        if (userAclIdSet.contains(acl.getId())) {  
            dto.setHasAcl(true);  
        }  
        if (roleAclIdSet.contains(acl.getId())) {  
            dto.setChecked(true);  
        }  
        aclDtoList.add(dto);  
    }  
    return aclListToTree(aclDtoList);  
}

future

asdasdasd