当前位置: 首页 > 面试题库 >

如何将Optional转换为OptionalInt?

寇鸿
2023-03-14
问题内容

我有一个Optional想要“转换”为的OptionalInt,但是似乎没有一种简单的方法可以做到这一点。

这是我想做的(人为的示例):

public OptionalInt getInt() {
    return Optional.ofNullable(someString).filter(s -> s.matches("\\d+")).mapToInt(Integer::parseInt);
}

但是,没有mapToInt()方法Optional

我能想到的最好的是:

return Optional.ofNullable(someString)
    .filter(s -> s.matches("\\d+"))
    .map(s -> OptionalInt.of(Integer.parseInt(s)))
    .orElse(OptionalInt.empty());

但这似乎并不优雅。

我是否在JDK中缺少某些东西可以使转换更加优雅?


问题答案:

虽然代码不比普通条件表达式更具可读性,但是有一个简单的解决方案:

public OptionalInt getInt() {
    return Stream.of(someString).filter(s -> s != null && s.matches("\\d+"))
        .mapToInt(Integer::parseInt).findAny();
}

使用Java 9,您可以使用

public OptionalInt getInt() {
    return Stream.ofNullable(someString).filter(s -> s.matches("\\d+"))
        .mapToInt(Integer::parseInt).findAny();
}

如前所述,它们都不比普通的条件表达式更具可读性,但是我认为,它看起来仍然比使用条件表达式更好mapOrElseGet(而且第一个变体不需要Java 9。



 类似资料:
  • 问题内容: 我在mySQL 5.1中有一个数据类型的日期列。如何将其转换为DATE? 这是我到目前为止所拥有的- 得到这个 错误-#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在’FROM 7 FOR 4附近使用) 请帮忙。 问题答案: 您可以使用MySQL的功能 尽管我怀疑您使用Unix时间戳会更轻松

  • 问题内容: 有没有一种简单的方法可以避免处理文本编码问题? 问题答案: 您确实无法避免处理文本编码问题,但是Apache Commons中已有一些解决方案: 至: 至: 您只需要选择所需的编码即可。

  • 问题内容: 如何使用Java将Dicom文件(.dcm)转换为jpeg图像?这是我的代码: 我在运行项目时遇到以下错误 请帮助并提前感谢 问题答案: 这是使用dcm4che 2将DICOM转换为JPEG的链接 以下是我的代码,效果很好,我将其与导入一起放置,因此可能用完了。 用于运行它的罐子 dcm4che-imageio-2.0.28.jar dcm4che-image-2.0.28.jar j

  • 问题内容: 我正在使用A 将Json从Web转换为字符串。 这可能很简单,但是我似乎无法将此字符串转换为。 我怎样才能做到这一点? 问题答案: 请参阅文档和示例。

  • 问题内容: 如何在Java中将org.jdom.Document转换为字符串? 问题答案:

  • 问题内容: 我有一个下面的代码- 通过HttpClient连接到Web服务到PHP文件 从SQL查询返回结果 返回格式是一个jArray(一个JSONArray) 当我查看LogCat时,我看到了查询的所有“名称”,每条记录都被打印出来。我只需要将这些结果插入ListView中即可。我怎样才能做到这一点? PS-我没有ArrayAdapter的单独类。这可能是原因吗? 问题答案: 如果您只想显示t