解决,不兼容的类型错误,Java 8

玛雅比什特

我试图使用Java 8 stream()实现一种逻辑。

List<Persons> persons = logs.stream().map(l -> {
  return rules.stream().map(rule -> generator.apply(rule)).collect(Collectors.toList());
}).collect(Collectors.toList());

但我得到:

不兼容的类型:必填列表,但集合被推断为R,没有任何类型的列表的实例

他们是

如果

l -> {return rules.stream().map(rule -> generator.apply(rule)).collect(Collectors.toList());}

产生一个List<Person>,外部Stream管道会产生一个List<List<Person>>

如果需要,flatMap则需要List<Person>

List<Persons> persons = 
    logs.stream()
        .flatMap(l -> rules.stream().flatMap(rule -> generator.apply(rule).stream()))      
        .collect(Collectors.toList());

说明:

rules.stream().flatMap(rule -> generator.apply(rule).stream())创建一个Stream<String>并将其平面映射到Stream<Persons>

.flatMap(l -> rules.stream().flatMap(rule -> generator.apply(rule).stream()))flat将外部的元素映射Stream到a Stream<Persons>,可以收集到a List<Persons>

顺便说一句,尚不清楚输入logs与输出之间的关系,因为您忽略了logs.stream()映射中Stream的元素

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误:不兼容的类型:意外的返回值:Java的8

java8流API的投掷不兼容的类型:对象[]不能被转换为整数[]转换字符串数组整数数组时

LAMBDA导致Java的9编译错误“不兼容的类型”,编译Java中8

在Java 8类型不匹配错误

Collections <Integer> .stream()的Java8 IntStream不兼容返回类型

Java中的File.createTempFile获取不兼容的类型错误

Java泛型“不兼容类型”编译时错误

如何在Java中解决这种不兼容的类型?

Java错误:“类型不兼容”消息

Java-错误:返回类型不兼容

Java 8编译错误“推理变量D具有不兼容的范围”

Java 8类型推断错误

PG ::错误:错误:新编码(UTF8)不兼容

错误:不兼容的类型:推断变量R具有不兼容的界限(Lambda Java 8)

Java 8函数-不兼容的类型

与Java 8 ZonedDateTime API不兼容的旧日期格式

Java不兼容类型编译器错误

Java不兼容类型错误

错误查找@ 4.1.0:引擎“节点”与此模块不兼容。预期版本“> = 8”。Ember js + Heroku部署

不兼容的指针类型'uint8_t *'发送给'uint8_t **'-如何解决?

向Windows Phone 8 Project添加DLL引用时出现“不兼容的程序集”错误

AlertDialog不兼容的类型错误

具有不兼容参数的Java 8 Lambda转换

Java-长列表错误:类型不兼容

Greenfoot不兼容的类型错误

类型不兼容的Java中的此错误是什么?

int 类型的参数与参数类型 Uint8* 不兼容

InvalidArgumentError:不兼容的形状:[8,3] 与 [8,4]

Java Gremlin union 与项目不兼容类型错误