I want to generate a list of strings, comprising id and external ids, from a list of Bean.
JavaScript
x
public class User {
private String id;
private List<String> externalIds;
}
I got it using the below code, but here I need to do the stream twice.
JavaScript
List<User> references = new ArrayList();
Stream.concat(references.stream().map(User::getId),
references.stream().map(User::getExternalIds).flatMap(Collection::stream))
.collect(Collectors.toList());
Is there any better way to rewrite this code?
Advertisement
Answer
Use Stream.concat
inside the flatMap
operation:
JavaScript
references.stream()
.flatMap(user -> Stream.concat(
Stream.of(user.getId()),
user.getExternalIds().stream()
))
.collect(Collectors.toList())