java - java将返回类型强制为泛型类型,而不是使用收集器和流构造映射的对象类型
问题描述
我正在尝试Map<String, GraphNode<Character>>
从List<Pair<GraphNode<Character>, List<String>>>
对构建。但我面临的问题是它给出错误说Type mismatch: cannot convert from Map<Object,Object>
to Map<String,GraphNode<Character>>
。
我应该如何强制退货Map<String,GraphNode<Character>>
List<Pair<GraphNode<Character>, List<String>>> pairs = lines.stream().map(line -> {
String[] split = line.split(":");
List<String> dest = Lists
.newArrayList(Splitter.on(",").trimResults().omitEmptyStrings().splitToList(split[1]));
GraphNode<Character> node = new GraphNode<>(split[0].toCharArray()[0]);
return new javafx.util.Pair<GraphNode<Character>, List<String>>(node, dest);
}).collect(Collectors.toList());
Map<String, GraphNode<Character>> graphMap = pairs.stream().map(pair -> pair.getKey())
.collect(Collectors.toMap(GraphNode::getData, pair -> pair));
解决方案
您的map
步骤是错误的,因为您正在丢弃List<String>
(s 的值部分Pair
)中的数据,我假设您希望在输出映射中。我建议使用flatMap
将 转换Stream<Pair<GraphNode<Character>, List<String>>>
为Stream<Pair<GraphNode<Character>, ListString>>
. 从那里,得到一个Map<String, GraphNode<Character>>
是微不足道的。
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));
推荐阅读
- react-native - React native:axios 请求上可能出现未处理的 Promise Rejection
- python - 按日期列合并 2 个数据框(无前瞻偏差)
- excel - 管理 talend 中的 excel 文件列表
- javascript - 循环内的 setTimeout 运行代码 1 次然后等待并重复
- webpack - 使用 aws-lambda 构建无服务器 apollo-server 失败
- mysql - 如何使用 python flask MySql Db 调试您的查询?
- javascript - 脚本不服务于浏览器窗口
- entity-framework - VS2019 中的 EF Designer 没有出现
- java - JOGL 2.3.2 示例编译但无法运行(NetBeans 12.4 中的 Maven)
- python-3.x - 尝试从给定字符串中获取最长的递减子字符串,记住区分大小写