Ваш подход довольно неэффективен, просто объедините методы:
collectionEntityDTO.stream()
.map(EntityDTO::getId)
.map(IdDTO::getCode)
.toArray(Long[]::new);
Этот подход лучше, потому что:
Проще читать, что происходит
Это более эффективно, как уже упоминалось, так как не требует энергичного создания новых объектов коллекции на каждом промежуточном шаге.
- Нет беспорядка с переменными мусора.
- проще распараллелить.