java - 如何在 java Stream API 中对对象进行类型转换?

标签 java java-8 java-stream

如何在嵌套列表的对象内对对象进行类型转换 -:

C c = GenericScreenDataBean fieldObjx = this.expenseLineItemList.stream()
                .flatMap(a -> a.getSectionModel().getControls().stream())
                .filter(b -> b.getData() instanceof GenericScreenDataBean)
                .map(GenericScreenDataBean.class::cast)
                .filter(c->c.getFieldKey().equals("IncurredAmount")).findAny().orElse(null);

正如上面提到的代码,以下是说明:

List<expenseLineItemList>是大师List我为此调用流 API,然后在 List<Controls> 上进行流式传输.

现在,数据getObject()Controls class 是我试图在这里进行类型转换的对象类型。如 map 功能map(GenericScreenDataBean.class::cast)将转换Controls.class ,我遇到了类型转换异常。

所以,不要类型转换 Controls.class ,我如何输入 getControls().getObject()并过滤出想要的结果?

最佳答案

您似乎缺少map步骤:

C c = GenericScreenDataBean fieldObjx = this.expenseLineItemList.stream()
                .flatMap(a -> a.getSectionModel().getControls().stream())
                .filter(b -> b.getData() instanceof GenericScreenDataBean)
                .map(Controls::getData)
                .map(GenericScreenDataBean.class::cast)
                .filter(c->c.getFieldKey().equals("IncurredAmount")).findAny().orElse(null);

或者,如果您想要单个映射,您可以使用 lambda 表达式而不是方法引用:

C c = GenericScreenDataBean fieldObjx = this.expenseLineItemList.stream()
                .flatMap(a -> a.getSectionModel().getControls().stream())
                .filter(b -> b.getData() instanceof GenericScreenDataBean)
                .map(c -> (GenericScreenDataBean) c.getData())
                .filter(c->c.getFieldKey().equals("IncurredAmount")).findAny().orElse(null);

关于java - 如何在 java Stream API 中对对象进行类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59084021/

相关文章:

java - context.xml 和 server.xml 之间的区别?

java - 在流中添加 MathContext

java - 如何流式传输并获取所需格式类型的对象

java - 如何将 LocalDate 转换为 Instant?

java - 如何使用java流根据键将map的值分组到列表中?

java - Parallel Stream 给出空项,如何在 Java 8 中执行

java - 为什么即使元素未插入到 Firestore 文档中的数组中,也会调用 successListener?

java - 抑制 Eclipse 中缺少 @Override 注释的警告

Java,解压缩文件名中包含德语字符的文件夹

java - 在 return 语句中找不到适合 ArrayList<String> .toArray(String[]::new) 的方法