java - 从 Java 中的 Optional->List->List 转换的链式方法
问题描述
我有一个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
可能是解决方案,但我不知道如何在这里使用它。
解决方案
没有。flatMap
in case of Optional
is to flatten a possible Optional<Optional<T>>
to 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());
}
推荐阅读
- wkhtmltopdf - 为什么我的标题最终会出现在 TuesPechkin 页面之外?
- amazon-web-services - 使用 DynamoDB Stream 的新数据聚合
- vb.net - DataGrid 格式单元格属性
- javascript - MongoDb 多集合事务不起作用
- mysql - 是否可以在 SQL 脚本中包含变量和表达式(对于 MySQL)?(最初错误发布到 ServerFault)
- excel - 如果特定列中的单元格有数据,如何告诉 excel 宏删除整行?
- javascript - 为什么即使我添加了选择器,puppeteer 也不能从 iframe 中抓取元素
- postgresql - 事务中的单个插入语句
- csv - Erlang:阅读非英文字母并打印出来
- python -