[英]Chain methods to convert from Optional->List->List in Java
我有一個包含列表的Optional
對象。 我想將此列表中的每個對象映射到另一個列表,並返回結果列表。
那是:
public List<Bar> get(int id) {
Optional<Foo> optfoo = dao.getById(id);
return optfoo.map(foo -> foo.getBazList.stream().map(baz -> baz.getBar()))
}
如果沒有溪流內的溪流,有沒有一種干凈的方式呢?
我認為flatMap
可能是解決方案,但我無法弄清楚如何在這里使用它。
沒有。 如果是Optional
則flatMap
將可能的Optional<Optional<T>>
壓平為Optional<T>
。 所以這是正確的。
public List<Bar> get(Optional<Foo> foo) {
return foo.map(x -> x.getBazList()
.stream()
.map(Baz::getBar)
.collect(Collectors.toList()))
.orElse(Collections.emptyList());
}
Java 9方法將成為下列方法:
public List<Bar> get(Optional<Foo> foo) {
return foo.map(Foo::getBazList)
.stream()
.flatMap(Collection::stream)
.map(Baz::getBar)
.collect(Collectors.toList());
}
也就是說,您應該避免使用Optional
s作為參數, 請參閱此處 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.