Это легко сделать, используя map
вместо forEach
для создания FullName
s, затем Collectors.toList
для создания списка.
firstName.stream().map(n -> new FullName(n, "SomeSurname")).collect(Collectors.toList());
Это не только одно утверждение, предпочтительнее сделать так , если есть возможность параллельных потоков, чтобы избежать проблем параллелизма.Кроме того, нежелательно использовать forEach
, обычно используемый для побочных эффектов, в качестве основной цели, которую здесь собирают в список.
Кроме того, вам не следует беспокоиться о том, что это всего одна строка.Читаемость важнее, чем скупость на количество строк.Это было сделано в одно утверждение, даже если это несколько строк.Обычно каждая операция в потоке Java отделяется отдельной строкой.
firstName.stream()
.map(n -> new FullName(n, "SomeSurname"))
.collect(Collectors.toList());
Если вы хотите, вы можете даже объединить создание начального списка в один оператор.
List<FullName> fullName = Arrays.asList("John", "Peter", "Foo").stream()
.map(n -> new FullName(n, "SomeSurname"))
.collect(Collectors.toList());