Требуется только один сбор:
List<SomeClass> someList2 =
someList1.stream()
.map(i -> {
SomeClass someObj = new SomeClass();
someObj.setField(i.getField());
return someObj;
}
)
.collect(Collectors.toList());
Но обратите внимание, что с конструктором в SomeClass
, который принимает значение getField()
, это будет действительно более аккуратно:
List<SomeClass> someList2 =
someList1.stream()
.map(i-> new SomeClass(i.getField())
.collect(Collectors.toList());
Или, разделив операцию map()
на два отдельных преобразования, вы можете использовать ссылки на методы, что улучшает удобочитаемость:
List<SomeClass> someList2 =
someList1.stream()
.map(OneClass::getField)
.map(SomeClass::new)
.collect(Collectors.toList());