Java 8:将POJO的列表强制转换为流中的map-ID-POJO=map(函数<;?super C,?>;) ;无法应用于(<;lambda表达式>;,<;lambda表达式>;)

Java 8:将POJO的列表强制转换为流中的map-ID-POJO=map(函数<;?super C,?>;) ;无法应用于(<;lambda表达式>;,<;lambda表达式>;),java,list,collections,lambda,java-stream,Java,List,Collections,Lambda,Java Stream,如何解决这个问题 错误 地图(功能) 无法应用流中的 到(lambda表达式>,lambda表达式>) 静态C类{ int-id; 公共int getId(){ 返回id; } } Map c=Arrays.asList(new c()).stream().collect(Collectors.toMap(c->c.getId(),c->c)); 试试这个 Map<Integer, C> map = Arrays.asList(new C())

如何解决这个问题

错误

地图(功能) 无法应用流中的 到(lambda表达式>,lambda表达式>)

静态C类{
int-id;
公共int getId(){
返回id;
}
}
Map c=Arrays.asList(new c()).stream().collect(Collectors.toMap(c->c.getId(),c->c));
试试这个

 Map<Integer, C> map = Arrays.asList(new C())
                          .stream()
                          .collect(Collectors.toMap(C::getId, c -> c));
Map-Map=Arrays.asList(新的C())
.stream()
.collect(Collectors.toMap(C::getId,C->C));

在您的示例中,映射所做的是将流中的对象从一个对象更改为另一个对象。e、 g.您有一个
C
对象流,然后
map(C->C.getId())
会将其更改为
整数流。您正在寻找的是
collect
函数,该函数终止流并允许您将其“收集”到您试图到达的任何对象

map()
不是这样工作的。它不创建
映射
。是,未收集。
数组.asList(新的C()).stream().collect(Collectors.toMap(C::getId,Function.identity())我总是发现Function.identity比只执行x->x要详细得多
 Map<Integer, C> map = Arrays.asList(new C())
                          .stream()
                          .collect(Collectors.toMap(C::getId, c -> c));