Java 8 stream adds a new object to the list from the return value
•
Java
I want to save the return value of the method and use it to create a new object and add it to the list Here is a clearer block of code:
final List<FooBoo> fooboos = new ArrayList<>();
for (Foo foo : foos) {
Optional<Boo> boo = generateBoo(foo);
if (boo.isPresent()) {
fooboos.add(new FooBoo(foo,boo.get()));
}
}
I've tried something like this:
fooboos = foos
.stream()
.map(f -> generateBoo(f))
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toList());
But obviously I missed something here that is actually creating a fooboo object How do I do this using the Java streaming method?
Solution
fooboos = foos
fooboos = foos
.stream()
.map(foo -> generateBoo(foo).map(boo -> new FooBoo(foo,boo))
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toList());
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
