Возвращает логическое значение вместо списка - PullRequest
1 голос
/ 16 октября 2019
  1. пользовательский класс с полями id, name и types
public class User {
    private String id;
    private String name;
    private List<Types> types;
}
Типы классов с полями id, name, connectedTo
{
    private String id;
    private String name;
    private String linkedTo;

}
Реализован метод для получения типов от пользователя и возврата его в виде списка
private List<Types> getType(List<User> Users) {
        return Users
                .stream()
                .map(User::gettypes)
                .flatMap(List::stream)
                .collect(Collectors.toList());
    }}
Теперь необходимо сопоставить тело ответа. Для этого у меня есть класс ответа:
    public class UserResponse {

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

}
Необходимо сопоставить поля из Types с ответом пользователя, чтобы вернуть его в виде списка
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();
    }

Вот проблема, я не могу вернуть его в виде списка вместо получения логического значения. .

Есть ли эффективный способ сделать это? Рецензент кода не хочет, чтобы я использовал для каждого из них и возвращал список

1 Ответ

2 голосов
/ 16 октября 2019

Лучшим значением будет

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в вашем коде.

  • Он map s для UserResponse объектов и собирает их для возврата List<UserResponse> при использовании Stream для него без явного создания экземпляра и .addзвонок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...