Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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将返回类型强制为泛型类型,而不是对象类型,以便使用收集器和流构建映射_Java_Generics_Java Stream_Collectors - Fatal编程技术网

java将返回类型强制为泛型类型,而不是对象类型,以便使用收集器和流构建映射

java将返回类型强制为泛型类型,而不是对象类型,以便使用收集器和流构建映射,java,generics,java-stream,collectors,Java,Generics,Java Stream,Collectors,我正试图从列表对构建映射。但我面临的问题是,它给出的错误是类型不匹配:无法从Map转换为Map 我应该如何强制返回Map List pairs=lines.stream().map(line->{ String[]split=line.split(“:”); List dest=列表 .newArrayList(Splitter.on(“,”).trimResults().ompiteEmptyStrings().splitToList(split[1]); GraphNode节点=新Graph

我正试图从
列表
对构建
映射
。但我面临的问题是,它给出的错误是类型不匹配:无法从
Map
转换为
Map

我应该如何强制返回
Map

List pairs=lines.stream().map(line->{
String[]split=line.split(“:”);
List dest=列表
.newArrayList(Splitter.on(“,”).trimResults().ompiteEmptyStrings().splitToList(split[1]);
GraphNode节点=新GraphNode(拆分[0]。toCharArray()[0]);
返回新的javafx.util.Pair(node,dest);
}).collect(Collectors.toList());
Map graphMap=pairs.stream().Map(pair->pair.getKey())
.collect(Collectors.toMap(GraphNode::getData,pair->pair));

由于您的类具有
字符
类型(
GraphNode
),因此我认为
GraphNode::getData
也返回
字符
相关类型

但是您在
Map
中将其分配给
String
,因此会出现类型不匹配


解决方法是将
GraphNode::getData
映射到String

您的
map
步骤是错误的,因为您正在丢弃
列表中的数据(即
的值部分),我假设您希望将其放在输出映射中。我建议使用
flatMap
转换为
。从那里,获得
地图
是件小事

Map<String, GraphNode<Character>> graphMap =
    pairs.stream()
         .flatMap(pair->pair.getValue().stream().map(s -> new javafx.util.Pair<GraphNode<Character>, String>(pair.getKey(), s)))
         .collect(Collectors.toMap(Pair::getValue,Pair::getKey));
地图图形地图=
pairs.stream()
.flatMap(pair->pair.getValue().stream().map(s->newjavafx.util.pair(pair.getKey(),s)))
.collect(Collectors.toMap(Pair::getValue,Pair::getKey));
Map<String, GraphNode<Character>> graphMap =
    pairs.stream()
         .flatMap(pair->pair.getValue().stream().map(s -> new javafx.util.Pair<GraphNode<Character>, String>(pair.getKey(), s)))
         .collect(Collectors.toMap(Pair::getValue,Pair::getKey));