Как я могу использовать потоки Java для получения значения x имен?

avatar
IveGotCodeButImNotACoder
1 июля 2021 в 20:59
61
2
0

Я могу использовать приведенный ниже фрагмент для получения имени, если в списке есть 1 запись, извлекая элемент 0 в списке, однако каждый NameResponse может иметь несколько имен (например, имя, отчество и фамилия). Как я могу получить x имен, связанных с одним клиентом? Там может быть 20 имен для аргумента. Я хотел бы реализовать использование потока, так как я использую Java 8, но я не уверен, как это реализовать. Есть предложения?

private List<String> getNames(Customer customer) {

    List<NameResponse> nameResponses = new ArrayList<>();
    NameResponse nameResponse = new NameResponse();
    nameResponse.setName("Test Name");
    nameResponses.add(nameResponse);
    customer.setNames(nameResponses);

    return List.of(customer.getNames().get(0).getName());
}

Класс клиента:

private List<NameResponse> names;

Класс NameResponse:

private String name;
Источник

Ответы (2)

avatar
Eritrean
1 июля 2021 в 21:15
3

Что-то вроде приведенного ниже, если у вас есть соответствующие геттеры:

return customer.getNames()
               .stream()
               .map(NameResponse::getName)
               .collect(Collectors.toList());
avatar
GMachado
1 июля 2021 в 21:16
2

Вы можете сделать это с помощью оператора map в потоке, а затем выполнить сбор для вывода списка:

return customer.getNames().stream()
    .map(nameResponse -> nameResponse.getName())
    .collect(Collectors.toList()));
IveGotCodeButImNotACoder
1 июля 2021 в 21:25
0

Я мог бы принять любой ответ, оба делают то же самое, только у вас есть лямбда, а у другого есть ссылка на метод! Спасибо