Получить массив свойств, свойств (вложенное свойство) с помощью потока Java 8 - PullRequest
0 голосов
/ 12 декабря 2018

На основании этого Вопрос ...

У меня есть этот код:

List<IdDTO> ids = collectionEntityDTO.stream().map(EntityDTO::getId).collect(Collectors.toList());
List<Long> codes = ids.stream().map(IdDTO::getCode).collect(Collectors.toList());
Long[] arrayCodes = codes.toArray(new Long[0]);

Как это сделать, таким простым способом?

1 Ответ

0 голосов
/ 12 декабря 2018

Ваш подход довольно неэффективен, просто объедините методы:

collectionEntityDTO.stream()
        .map(EntityDTO::getId)
        .map(IdDTO::getCode)
        .toArray(Long[]::new);

Этот подход лучше, потому что:

  • Проще читать, что происходит

  • Это более эффективно, как уже упоминалось, так как не требует энергичного создания новых объектов коллекции на каждом промежуточном шаге.

  • Нет беспорядка с переменными мусора.
  • проще распараллелить.
...