В основном остальные ответы показывают правильное направление. Но если вы хотите сохранить ту же семантику своего кода, необходимо принять во внимание что-то дополнительное.
Согласно JavaDoc Collecotrs.toList
Возвращает Collector
, который накапливает входные элементы в новый
List
. Там нет никаких гарантий на тип, изменчивость,
сериализуемость или потокобезопасность возвращаемых List
; если больше
требуется контроль над возвращенным List
, используйте
toCollection(Supplier)
.
Возвращенные articles
имеют тип ArrayList<ArticleEntity>
. Таким образом, этот список, например, изменяемые.
Тип возврата метода getAllArticle()
: Iterable<Article>
. Таким образом мы можем назвать
Iterator<Article> iterator = getAllArticle().iterator();
Но если вам нужно позвонить iterator.remove()
"нет никаких гарантий в отношении изменчивости [...] базовой коллекции. Следовательно, это может привести к ( JavaDoc )
UnsupportedOperationException - если операция удаления не
поддерживается этим итератором
Чтобы сохранить поведение исходного кода, используйте Collectors.toCollection
:
List<Article> articles = articleEntities.stream()
.map(ArticleMapper::articleEntity2Article)
.collect(Collectors.toCollection(Lists::newArrayList));
Это вернет articles
, построенное Lists.newArrayList()
.