java - 使用 Optional 而不是嵌套 if else 的 Lambda 函数
问题描述
Optional<String> myData;
Set<String> mySet;
if(myData.isPresent()) {
if(myData.get().contains(“testValue”)) {
mySet.add(“somedata”);
}
}
if(!myData.isPresent()) {
mySet.add(“someotherdata”);
}
我有这样的场景。我在哪里嵌套了 if-else 块,我需要使用 lambda 函数将其转换为 Java8 映射。我怎样才能做到这一点?
解决方案
这将重现您之前的结果,但略有改变。我相信流解决方案既不必要也不可取。以下将:
- 导致
empty set
如果数据存在但不存在testValue
someotherdata
如果数据不存在,则导致包含的集合- 导致包含
somedata
数据是否存在且匹配的集合testValue
String result = myData.isPresent() ?
(myData.get().contains("testValue") ? "somedata" : "") :
"someotherdata";
if (!result.isBlank()) {
mySet.add(result);
}
推荐阅读
- r - 缩放栅格堆栈中的单个像元
- networking - 如何通过命令行在通过openvpn连接的ubuntu服务器和windows客户端之间发送消息?
- c++ - 关于指针的困惑
- amazon-dynamodb - 如何管理 dynamoDB 结构?
- php - 检查日期时间是否超过 5 天
- graphql - 多个父类型的 Gatsby graphql 片段
- ios - 为 vEvent 生成 QR 码会出现错误“未找到可用数据”
- docker - 获取 https://ghrc.io/v2/:net/http: 等待连接时取消请求(等待标头时超出 Client.Timeout)
- php - Laravel 日期转换有什么问题?
- google-app-engine - 如何在 Google Cloud Platform 日志中启用 POST 请求正文?