Java-类型不匹配(但是两者来自同一类型?!):无法从HashMap >转换为HashMap >

问题描述 投票:0回答:1

编辑:问题已解决:请参见Karim SNOUSSI的回答及其下方的我的评论。


这是我在堆栈溢出时的第一个问题,因此我可能不会一开始就做好一切。抱歉另外,我是Java和一般编程的新手。

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

[当试图将hashMap从一个类传递到另一个类时,IDE eclipse表示:类型不匹配:无法从HashMap>转换为HashMap>

但是如果我做对的话,两者的类型相同,所以不知道出了什么问题。

这是我的代码:我只发布其中的一部分,以免混乱不堪]

我的类中有一个HashMap,名为graph.class,在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具有相同的类型,不是吗?

我很高兴收到任何有帮助的答复,并在此先感谢您。

编辑:问题已解决:参见Karim SNOUSSI的回答及其下方的我的评论。这是我在堆栈溢出时的第一个问题,因此我可能一开始就无法正确解决所有问题。抱歉...

java arraylist collections maps
1个回答
0
投票

尝试用您的主要方法替换它

© www.soinside.com 2019 - 2024. All rights reserved.