到目前为止,这是我得到的:
Optional<Foo> firstChoice = firstChoice();
Optional<Foo> secondChoice = secondChoice();
return Optional.ofNullable(firstChoice.orElse(secondChoice.orElse(null)));
这让我既震惊又浪费。如果存在firstChoice,则我将不必要地计算secondChoice。
还有一个更有效的版本:
Optional<Foo> firstChoice = firstChoice();
if(firstChoice.isPresent()) {
return firstChoice;
} else {
return secondChoice();
}
在这里,如果不复制映射器或声明另一个局部变量,就无法将某些映射函数链接到最后。所有这些使代码比要解决的实际问题更加复杂。
我宁愿这样写:
return firstChoice().alternatively(secondChoice());
但是可选:::显然不存在。怎么办?
试试这个:
firstChoice().map(Optional::of)
.orElseGet(this::secondChoice);
map方法为您提供了一个Optional<Optional<Foo>>
。然后,该orElseGet
方法将其展平为Optional<Foo>
。secondChoice
仅当firstChoice()
返回空的可选参数时,才会评估该方法。
到目前为止我得到的是: 这让我觉得既可怕又浪费。如果第一个选择存在,我就不必要地计算第二个选择。 还有一个更有效的版本: 在这里,如果不复制映射器或声明另一个局部变量,我就无法将某个映射函数链接到最后。所有这些都使得代码比正在解决的实际问题更加复杂。 我宁愿这样写: 然而,可选的::可选的显然不存在。现在怎么办?
问题内容: 设和为两个集合。我正在寻找一种 非常 快速或优雅的方法来计算它们之间的设置差异(或,取决于您的偏好)。如标题所示,这两组存储和存储为Javascript数组。 笔记: 壁虎特技可以 我更喜欢本机函数(但是如果速度更快,我可以使用轻量级库) 我看过但未测试JS.Set(请参阅上一点) 编辑: 我注意到有关包含重复元素的集合的评论。当我说“设置”时,我指的是数学定义,这意味着(除其他外)它
问题内容: 最近,我开始开发linux设备驱动程序, 当我想使用内核代码进行调试并在内核文件中添加一些调试消息时,我遇到了一个问题。 例如,最近我加入一些和在驻留在。 然后,我执行以下步骤,这非常耗时。 然后重启并选择我的新内核版本。 我不知道有没有多余的步骤?任何指导或帮助将不胜感激。 问题答案: 这是我有关如何构建和运行定制内核的说明。 获取资源 Linus Torvalds的树是[1]。 在
本文向大家介绍检查Python中字符串是否为空的最优雅的方法是什么?,包括了检查Python中字符串是否为空的最优雅的方法是什么?的使用技巧和注意事项,需要的朋友参考一下 空字符串是“虚假的”,这意味着它们在布尔上下文中被认为是错误的,因此您只能使用非字符串。 示例 输出结果 这将给出输出: 示例 如果您的字符串可以有空格,并且您仍然希望它的值为false,则可以剥离它并再次检查。例如: 输出
问题内容: 假设您有一个存储有序树层次结构的平面表: 这是一个图,我们在这里。根节点0是虚构的。 您将使用哪种简约方法将其作为正确排序,正确缩进的树输出到HTML(就此而言,还是文本)? 进一步假设您只有基本的数据结构(数组和哈希图),没有带有父/子引用的奇特对象,没有ORM,没有框架,只有两只手。该表表示为结果集,可以随机访问。 可以使用伪代码或简单的英语,这纯粹是一个概念性问题。 额外的问题:
问题内容: 我在Java中有一个布尔数组: 检查所有值是否为真的最优雅的方法是什么? 问题答案: