编辑:问题已解决:请参阅Karim SNOUSSI的回答及其下方的评论。
这是我在堆栈溢出时遇到的第一个问题,因此我可能不会一开始就做好一切。抱歉另外,我是Java和一般编程的新手。
我遇到了一个奇怪的错误,无法真正理解该解决方案。
IDE eclipse尝试将hashMap从一个类传递到另一个类时说: 类型不匹配:无法从HashMap>转换为HashMap>
但是如果我做对的话,两者的类型相同,所以不知道出了什么问题。
这是我的代码:我只发布其中的一部分,以免混乱不堪
我的类中有一个名为graph.class的HashMap, 在public HashMap> getAllShortestPaths()方法中使用它 计算图中每个节点到其他任何节点的所有最短路径 并存储到hashMap中以进行进一步处理。 如果我想通过其中的方法将其打印到屏幕上,则可以正常显示所有信息。
但是我的目的是将此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显示
类型不匹配:无法从HashMap转换> 到HashMap>
但是:
HashMap<Integer, ArrayList<Integer>> spMap = new HashMap<Integer,Integer, ArrayList<Integer>>();
HashMap<Integer, ArrayList<Integer>> shortestPathsMap = new HashMap<Integer, ArrayList<Integer>>();
spMap和shortestPathsMap具有相同的类型,不是吗?
我很高兴收到任何有帮助的答复,并在此先感谢您。
答案 0 :(得分:0)
尝试用您的主要方法替换它
HashMap<Integer, ArrayList<Integer>> spMap = new HashMap<Integer, ArrayList<Integer>>();
spMap = G.getShortestPathsMap();
与此
Map<Integer, ArrayList<Integer>> spMap = G.getShortestPathsMap();