Java 8collect()仅isPresent()可选值[重复]

2024-02-05

在 Java 8 中是否有更优雅的方法来实现这一目标?

list.stream()
    .map(e -> myclass.returnsOptional(e))
    .filter(Optional::isPresent)
    .map(Optional::get)
    .collect(Collectors.toList());

我说的是filter(Optional::isPresent)其次是map(Optional::get),我只想优雅地收集在列表中Optional具有价值的结果。


根据您的情况,您可以使用一个flatMap而不是组合map filter然后再次map。 为此,最好定义一个单独的函数来创建流:public private static Stream<Integer> createStream(String e)lambda 表达式中不要有几行代码。

请参阅我的完整演示示例:

 public class Demo{
    public static void main(String[] args) {
        List<String> list = Arrays.asList("1", "2", "Hi Stack!", "not", "5");
        List<Integer> newList = list.stream()
                .flatMap(Demo::createStream)
                .collect(Collectors.toList());
        System.out.println(newList);
    }

    public static Stream<Integer> createStream(String e) {
        Optional<Integer> opt = MyClass.returnsOptional(e);
        return opt.isPresent() ? Stream.of(opt.get()) : Stream.empty();
    }
}


class MyClass {
    public static Optional<Integer> returnsOptional(String e) {
        try {
            return Optional.of(Integer.valueOf(e));
        } catch (NumberFormatException ex) {
            return Optional.empty();
        }
    }
}

如果 returnsOptional 不能是静态的,您将需要使用“箭头”表达式而不是“方法引用”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 8collect()仅isPresent()可选值[重复] 的相关文章

  • Jackson JSON + Java 泛型

    我正在尝试将以下 JSON 反序列化 映射到List
  • java程序有多少种结束方式?

    我知道使用 System exit 0 可以结束一个java程序 例如 如果我有一个JFrame窗口 它会关闭并结束程序 但我想知道还有多少其他方法 可以关闭它并结束程序 包括发生错误时 程序会被关闭 JFrame也会被关闭吗 添加到其他答
  • Kafka - 如何同时使用过滤器和过滤器?

    我有一个 Kafka 流 它从一个主题获取数据 并且需要将该信息过滤到两个不同的主题 KStream
  • 如何以编程方式使用包含多列的 where-in 子句执行 PostgreSQL 查询?

    我的查询是这样的 select from plat customs complex where code t code s in 01013090 10 01029010 90 它在 psql 控制台中运行良好 我的问题是如何在客户端代码中
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • JOOQ 忽略具有默认值的数据库列

    看来JOOQ完全忽略了数据库列的默认值 既不会更新 ActiveRecord 对象 也不会在 INSERT 时跳过此列 相反 它尝试将其设置为 NULL 这在 NOT NULL 列上失败 Example CREATE TABLE bug f
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • 如何在 IntelliJ IDEA 中运行 akka actor

    来自 Akka 网站文档 然后 这个主要方法将创建所需的基础设施 运行演员 启动给定的主要演员并安排 一旦主要参与者终止 整个应用程序就会关闭 因此 您将能够使用类似于以下的命令运行上面的代码 下列的 java classpath akka
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • 类更改(例如字段添加或删除)是否保持 Serialized 的向后兼容性?

    我有一个关于 Java 序列化的问题 在这种情况下 您可能需要修改可序列化类并保持向后兼容性 我有丰富的 C 经验 所以请允许我将 Java 与 NET 进行比较 在我的Java场景中 我需要使用Java的运行时序列化机制序列化一个对象 并
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • Android ScrollView,检查当前是否滚动

    有没有办法检查标准 ScrollView 当前是否正在滚动 方向是向上还是向下并不重要 我只需要检查它当前是否正在滚动 ScrollView当前形式不提供用于检测滚动事件的回调 有两种解决方法可用 1 Use a ListView并实施On
  • Selenium 单击在 Internet Explorer 11 上不起作用

    我尝试在 Internet Explorer 上单击 selenium 但它不起作用 我努力了element click moveToElement element click build perform javascript没事了 事实上
  • 什么是 Java2D 处理程序线程?

    我创建了一个使用 Hibernate 的示例 java 应用程序 当我进行线程转储时 我观察到一个名为 Java2D Disposer 的奇怪线程 有人能告诉我该线程的功能吗 AWT 系统中的某些实体需要最终确定以释放资源 最突出的例子是j
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ

随机推荐

  • Tensorflow 运算速度极其缓慢

    我正在尝试使用 python 接口开始使用张量流 我的问题是 即使执行最基本的操作 也会花费很长时间 gt 5 分钟 使用从 macports 安装的 python3 6 和使用 pip 安装的tensorflow 1 13 tf nigh
  • 如何查找哪个表列对应于 Firebird 数据库中的约束?

    我有一个旧版 Firebird 版本 2 5 2 数据库 并使用 FlameRobin 版本 0 0 2 1851 来检查它 我已在 RDB RELATION CONSTRAINTS 表上运行以下查询来搜索名为 INTEG 172 的约束
  • 尝试在 Matlab 中使用发布时陷入无限循环

    Question 1 y dtmfsig 150006260 a t linspace 0 0 9 7200 plot t y title DTMF time signal xlabel t sec ylabel y t Part B fL
  • CSS:
    dt/dd 对之间有间距/边距

    我有以下 html dl dt Item 1 dt dd ul li Value 1 li ul dd dt Item 2 dt dd dd dt Item 3 dt dd ul li Value 1 li li Value 2 li ul
  • 使用 std::vector 管理映射内存 (glMapBuffer)

    我想到用 std vector 管理一系列映射内存 来自 glMapBuffer 是个好主意 map data to ptr T dataPtr T glMapBuffer this gt target access debug code
  • 如何将页面(模式对话框)与其同级页面(侧边栏)进行通信?

    我正在将我的脚本转换为附加组件 其中一个需求是配置模板 因此我编写了一个启动字段选择器的侧边栏 由于侧边栏没有足够的空间容纳选择器 因此我必须从侧边栏创建的模式对话框中启动它 方法是在服务器端调用以下代码 var html HtmlServ
  • 如何在 javascript 中获取 HTML 文件格式作为字符串

    我想在 javascript 中获取 html 文件所有内容的字符串值 例如 有什么办法可以做到这一点吗 尝试研究 AJAX 适合将 HTML 和 C 实现到 Javascript Web 应用程序中 在你的 JS 文件中 ajax typ
  • 16位灰度PNG

    我正在尝试编写 使用 libpng 一个 16 位灰度图像 其中每个点颜色等于其坐标之和 以下代码应生成 16 位 PNG 但会生成 8 位 例如this http dl dropbox com u 15187698 test png Wh
  • 如何在Python中使用子进程重定向输出?

    我在命令行中执行的操作 cat file1 file2 file3 gt myfile 我想用 python 做什么 import subprocess shlex my cmd cat file1 file2 file3 gt myfil
  • 为什么我的 Swift 循环失败并出现错误“Can't form range with end < start”?

    我有一个 for 循环 它检查一个数字是否是一个数字的因子 然后检查该因子是否是质数 然后将其添加到数组中 根据原始号码 我会收到一条错误消息 致命错误 无法形成结束 这种情况几乎每次都会发生 但对于某些数字来说效果很好 我发现唯一可以使用
  • Excel如何返回满足一定条件的数组?

    如果我的单元格范围内有数据A1 A6这是 Apple Banana Cherry Grape Orange Watermelon 有没有办法返回一个数组 在单个单元格中 用于较大公式的中间步骤 该数组返回上述数组 除了那些满足特定条件的条目
  • 使 MSDeploy (Visual Studio) 不删除 App_Data 文件夹,而是删除其他所有内容

    我正在使用 Visual Studio 的Publish按钮来部署我的网站 并希望在服务器上有一个不同的 App Data 文件夹 有一个复选框Leave extra files on destination do not delete 这
  • C# 中的高性能 TCP 服务器

    我是一名经验丰富的 C 开发人员 但到目前为止我还没有开发过 TCP 服务器应用程序 现在我必须开发一个高度可扩展的高性能服务器 可以处理至少 5 10 000 个并发连接 通过 GPRS 从 GPS 设备获取原始字节数据 一个常见的通信流
  • 在 .net 网站中生成文本文件的最佳方法是什么?

    我的 vb net Web 应用程序中有一个页面 需要将一堆数据放入文本文件中 然后将其提供给用户下载 在 net Web 服务器上构建此类文本文件的最佳 最有效方法是什么 编辑 为了回答下面的问题 这将是下载一次然后丢弃的文件 更新 我将
  • dma_mmap_coherent 和 remap_pfn_range 有什么区别?

    目前 我正在使用示例驱动程序 https github com claudioscordino mmap alloc blob master mmap alloc c从中学习 并从中我建立了自己的自定义驱动程序 mmap 代码几乎是相同的
  • Phonegap Android InAppBrowser 不工作

    我正在使用 Phonegap Cordova 3 0 0 开发 Android 应用程序 当我调用 InAppBrowser 时 我得到了运动事件 mTouchMode 4错误 并且InAppBrowser功能不起作用 那么我该如何解决这个
  • 正则表达式将数字与 Alpha 分开

    我有一堆字符串 10people 5cars 我该如何将其拆分为 10 people 5 cars 它可以是任意数量的数字和文本 我正在考虑编写某种正则表达式 但我确信在 Python 中有一种简单的方法可以做到这一点 gt gt gt r
  • tkinter 非常慢 - 如何加快速度或使用不同的库?

    我正在使用 tkinter 生成 2D 形态图 我发现它非常慢 例如 此脚本在我的 8 核 Xeon 上花费了近 10 秒 usr bin env python3 import random import tkinter as tk A 3
  • CyclicDist 在多个语言环境中变慢

    我尝试使用以下方法实现矩阵乘法CyclicDist module 当我使用一种语言环境与两种语言环境进行测试时 一种语言环境要快得多 是因为两个 Jetson nano 板之间的通信时间真的很长还是我的实现没有利用这种方式CyclicDis
  • Java 8collect()仅isPresent()可选值[重复]

    这个问题在这里已经有答案了 在 Java 8 中是否有更优雅的方法来实现这一目标 list stream map e gt myclass returnsOptional e filter Optional isPresent map Op