小编Sam*_*ams的帖子

使用可选项在Java流中处理null

如果我们有如下所示的senario,那么处理null的最佳方法是什么

//mocking for demonstraton  
studentsByCourseRoster.setUsers(null);

studentsByCourseRoster.getUsers().stream().forEach(user -> {
    final UserDTOv2 userDTO = new UserDTOv2();
    userDTO.populateUserDataFromUserDTO(user, groupedUsers);
    users.add(userDTO);
});
Run Code Online (Sandbox Code Playgroud)

java null optional java-8

8
推荐指数
1
解决办法
199
查看次数

使用 lambda 优化流

进一步优化以下代码的最佳方法是什么

 public List<GroupDTOv2> getAllGroups(String xTenantId, CourseType courseType, String courseId, ContextType contextType, String contextId) throws AuthenticationException {

    final List<GroupV2> groups = groupV2Repository.findByTenantIdAndCourseTypeAndCourseIdAndContextTypeAndContextId(xTenantId, courseType, courseId, contextType, contextId);
    final RosterDTOv2 roster = rosterServiceFacade.getRoster(xTenantId, courseType, courseId, contextType, contextId);

    final ArrayList<GroupDTOv2> groupDtoList=new ArrayList<>();

    groups.stream().forEach(group -> {
        final GroupDTOv2 groupDTO=new GroupDTOv2();
        BeanUtils.copyProperties(group,groupDTO);
        roster.getUsers().forEach(userDTOv2 -> {

            if(userDTOv2.getUserId().equalsIgnoreCase(group.getTeamLeadId())){
                groupDTO.setTeamLead(userDTOv2);
            }

            if(group.getTeamMemberIds().contains(userDTOv2.getUserId())){
                groupDTO.getTeamMembers().add(userDTOv2);
            }

        });
        groupDtoList.add(groupDTO);

    });

    return groupDtoList;
}
Run Code Online (Sandbox Code Playgroud)

如果我们使用两次流来设置团队领导对象和团队成员我认为成本会很高,那么什么是最合适的方式

java collections java-stream

5
推荐指数
1
解决办法
1148
查看次数

嵌套级别的Java 8流优化

我们如何使用优化此流来收集集合的嵌套级别和根级别.

final Set<String> groupedUsers = new HashSet<>();
groups.stream().forEach(group -> {
    groupedUsers.add(group.getTeamLeadId());
    groupedUsers.addAll(group.getTeamMemberIds().stream().collect(Collectors.toSet()));
});
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

1
推荐指数
1
解决办法
124
查看次数

Java 8流修复中间流方法不应该留下未使用的声纳问题

 group.getTeamMemberIds().stream().filter(id -> userMap.containsKey(id)).
            map(id -> groupDTO.getTeamMembers().add(userMap.get(id)));
Run Code Online (Sandbox Code Playgroud)

Sonar检测到这一点,因为中间流方法不应该被闲置主要bug

java java-8 java-stream sonarqube

-1
推荐指数
1
解决办法
280
查看次数

标签 统计

java ×4

java-8 ×3

java-stream ×3

collections ×1

null ×1

optional ×1

sonarqube ×1