Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何打开列表<;项目>;到地图<;项目,可完成的未来<;xyz>&燃气轮机;_Java_Java Stream_Completable Future_Method Reference - Fatal编程技术网

Java 如何打开列表<;项目>;到地图<;项目,可完成的未来<;xyz>&燃气轮机;

Java 如何打开列表<;项目>;到地图<;项目,可完成的未来<;xyz>&燃气轮机;,java,java-stream,completable-future,method-reference,Java,Java Stream,Completable Future,Method Reference,我有一个异步方法,其结果是完全可实现的: public CompletableFuture<DogLater> asyncDogLater(String dogName){} public CompletableFuture-asyncDogLater(字符串dogName){} 我有一份狗的名单: List<Dog> dogs; 列出狗; 现在,我想创建一张从狗的名字到完整未来的地图: Map<String, CompletableFuture<Do

我有一个异步方法,其结果是完全可实现的:

public CompletableFuture<DogLater> asyncDogLater(String dogName){}
public CompletableFuture-asyncDogLater(字符串dogName){}
我有一份狗的名单:

List<Dog> dogs;
列出狗;
现在,我想创建一张从狗的名字到完整未来的地图:

Map<String, CompletableFuture<DogLater>> map;
Map;
检查后,我正试图这样做:

    Map<String, CompletableFuture<DogLater>> completableFutures = dogs.stream()
            .collect( Collectors.toMap(Dog::getName,
                                       asyncDogLater(Dog::getName )));
Map completableFutures=dogs.stream()
.collect(Collectors.toMap(Dog::getName、,
asyncDogLater(Dog::getName));
但是编译器抱怨第一个
Dog::getName
有问题,因为:

无法从静态上下文引用非静态方法

第二个
Dog::getName
有一个错误:

字符串不是函数接口

我也检查了,但我仍然不确定如何解决这个问题。

收集器。toMap()
的第二个参数必须是
函数类型,在您的例子中是
函数

asyncDogLater(Dog::getName)
的类型是
函数
,如果我没弄错的话


您需要
toMap(Dog::getName,d->asyncDogLater(d.getName())

您需要
toMap(Dog::getName,d->asyncDogLater(d.getName())
@daniu工作得很好。你想把它作为对荣誉的回答吗?