Java 8 stream fix Intermediate Stream methods should not be left unused sonar 问题

Java 8 stream fix Intermediate Stream methods should not be left unused sonar issue

 group.getTeamMemberIds().stream().filter(id -> userMap.containsKey(id)).
            map(id -> groupDTO.getTeamMembers().add(userMap.get(id)));

Sonar 将此检测为中间流方法不应闲置主要错误

这里没有终端操作,所以不会执行这个流;因此 "unused" 声纳错误。

您在以下方面也有副作用:id -> groupDTO.getTeamMembers().add(userMap.get(id)

有更好的方法来解决这个问题:

List<String> teamMembers = group.getTeamMemberIds() // I assume String here...
                      .stream()
                      .map(userMap::get)
                      .filter(Objects::notNull)
                      .collect(Collectors.toList());


groupDTO.getTeamMembers().addAll(teamMembers);

您几乎不需要 containsKey 后跟 get - 您可以避免进行两次哈希查找,方法是执行 get 并查看结果是否不是 null