【问题标题】:Returning boolean instead of list返回布尔值而不是列表
【发布时间】:2020-02-13 09:54:05
【问题描述】:
  1. 具有字段 id、名称和类型的用户类
public class User {
    private String id;
    private String name;
    private List<Types> types;
}
  1. 具有字段 id、name、linkedTo 的类型类
{
    private String id;
    private String name;
    private String linkedTo;

}
  1. 实现了一种从用户获取类型并将其作为列表返回的方法
private List<Types> getType(List<User> Users) {
        return Users
                .stream()
                .map(User::gettypes)
                .flatMap(List::stream)
                .collect(Collectors.toList());
    }}
  1. 现在,必须映射到响应正文。为此,我有响应类:
    public class UserResponse {

    private String id;
    private String type;
    private String name;
    private String linkedTo;

}
  1. 必须将类型中的字段映射到用户响应以将其作为列表返回
private List<UserResponse> getUserResponse(UserRequest request) {
        List<User> Users = userServiceClient.getById();
        List<UserResponse> userResponses = new ArrayList<>();
        List<Types> TypesList = getType(Users);
            if (!typesList.isEmpty()) {
            return typesList.stream()
                    .map(type -> userResponses.add(new UserResponse( type.getGuid(),type.getName(),type.getName(),type.getLinkedTo())))
                        .collect(Collectors.toList());
    }
   return collections.emptylist();
    }

这是问题所在,我无法将它作为列表返回,而是得到一个布尔值..

有没有有效的方法来做到这一点?代码审阅者不希望我使用每个并返回列表

【问题讨论】:

  • 您没有从该方法返回任何内容
  • @AndrewTobilko 编辑了这个问题。它必须返回用户响应
  • 现在你没有从方法返回任何东西当typesList.isEmpty()
  • 查看List::add 的返回值,以及Stream::map 的作用。您正在列出Boolean。无论出于何种原因,代码整体看起来就像您错误地将 for 循环转换为流:不要。离开循环。
  • @AndrewTobilko 编辑问题以返回空列表

标签: java spring-boot collections orm java-stream


【解决方案1】:

更好的方法是

private List<UserResponse> getUserResponse(UserRequest request) {
    List<User> Users = userServiceClient.getById();
    List<Types> TypesList = getType(Users);
    return typesList.stream()
            .map(type -> new UserResponse(type.getId(), type.getName(), type.getName(), type.getLinkedTo()))
            .collect(Collectors.toList());
}

原因:

  • 如果typesList 为空,这将返回空的List,如您的代码中的Collections.emptyList。

  • 它将maps 发送到UserResponse 对象并收集它们以返回List&lt;UserResponse&gt;,同时对其使用Stream,而无需显式实例化和.add 调用。

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 2012-08-08
    • 2014-03-14
    • 2011-09-13
    相关资源
    最近更新 更多