gpt4 book ai didi

Java - 类型不匹配(但两者都来自相同类型?!) : cannot convert from HashMap> 到 HashMap>

转载 作者:行者123 更新时间:2023-12-01 19:11:53 28 4
gpt4 key购买 nike

<小时/>

编辑:问题已解决:请参阅 Karim SNOUSSI 的答案和我在下面的评论。

<小时/>

这是我在堆栈溢出时遇到的第一个问题,所以我可能不会一开始就把所有事情都做对。对此感到抱歉。此外,我对 Java 和一般编程都是新手。

我遇到了一个奇怪的错误,无法真正理解解决方案。

当尝试将 hashMap 从一个类传递到另一个类时,IDE Eclipse 会显示:类型不匹配:无法从 HashMap> 转换为 HashMap>

但是如果我正确的话,两者都是同一类型,所以不知道问题出在哪里。

这是我的代码:我只发布了其中的一部分,因此不会弄乱

我的类中有一个名为 graph.class 的 HashMap,它用在方法 public HashMap> getAllShortestPaths() 中其中将计算图中从每个节点到任何其他节点的所有最短路径并存储到 hashMap 中以供进一步处理。效果很好,当将 map 打印到屏幕上时,如果我想从其中的方法执行此操作,它会正确显示所有信息。

但我的目的是将此 hashMap 传递给另一个类,我将在其中收集对图表的整个分析并将其保存到新文件中。

public class Graph {
.
.
private HashMap<Integer, ArrayList<Integer>> shortestPathsMap = new HashMap<Integer, ArrayList<Integer>>();

。。.

public HashMap<Integer, ArrayList<Integer>> getShortestPathsMap() { return shortestPathsMap; }
.
.
.
public void getAllShortestPaths() {
for(int i = 0; i < getNodeCount(); i++) {
ArrayList<Integer> shortestPathMapValues = new ArrayList<>(); // saves ...

for(int n = i; n < getNodeCount(); n++) {
shortestPathMapValues.add(n); // the corresponding node id's and ..
shortestPathMapValues.add((int) shortestPath(i,n)); // the outcome of shortestPath() calculation
}

shortestPathsMap.put(i, shortestPathMapValues); // saves the first node id and the corresponding values
}
}
.
.

因此,为了测试,我将其传递给 Main.class 并确实想将其打印到屏幕上:

public HashMap<Integer, ArrayList<Integer>> getShortestPathsMap() { 
return shortestPathsMap;
}

public class Main {

public static void main(String[] args) {
.
.
.
G.getAllShortestPaths();

HashMap<Integer, ArrayList<Integer>> spMap = new HashMap<Integer, ArrayList<Integer>>();
spMap = G.getShortestPathsMap();

// iterate and display values
for(Entry<Integer, ArrayList<Integer>> entry : spMap.entrySet()) {
int key = entry.getKey();
ArrayList<Integer> values = entry.getValue();

System.out.println("Key = " + key);
System.out.println("Values = " + values);
}
.
.
.

在 Main.class 中的以下行:spMap = G.getShortestPathsMap();IDE 显示

Type mismatch: cannot convert from HashMap> to HashMap>

但是:

HashMap<Integer, ArrayList<Integer>> spMap = new HashMap<Integer,Integer, ArrayList<Integer>>();

HashMap<Integer, ArrayList<Integer>> shortestPathsMap = new HashMap<Integer, ArrayList<Integer>>();

spMap 和shortestPathsMap 具有相同的Typ,不是吗?

我很高兴收到任何有帮助的回复,并提前感谢您。

最佳答案

尝试在您的主要方法中替换它

HashMap<Integer, ArrayList<Integer>> spMap = new HashMap<Integer, ArrayList<Integer>>();
spMap = G.getShortestPathsMap();

有了这个

Map<Integer, ArrayList<Integer>> spMap = G.getShortestPathsMap();

关于Java - 类型不匹配(但两者都来自相同类型?!) : cannot convert from HashMap<Integer, ArrayList<Integer>> 到 HashMap<Integer,ArrayList<Integer>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59474132/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com