gpt4 book ai didi

java - 通用数组 - 无法编译

转载 作者:行者123 更新时间:2023-12-02 04:18:06 26 4
gpt4 key购买 nike

我正在尝试获取 HashMap 数组,这就是我所拥有的:

public class MinCuts {

HashMap<Integer, Integer> [] graph; // Graph as an array of hash maps
int size; // Number of nodes

// Empty constructor
MinCuts() {

} // END OF CONSTRUCTOR


// Reads the graph from file path as an adjacency list
public void openFile (int num_of_nodes, String path) {
In in = new In(path);
graph = (HashMap<Integer, Integer> []) new Object[num_of_nodes];

String adj_list;

for (int i = 0; i < num_of_nodes; i++) {
adj_list = in.readString();
StdOut.println(adj_list);
}
}


public static void main(String[] args) {

MinCuts x = new MinCuts();
x.openFile(10, "/Users/alekscooper/Desktop/kargerMinCut.txt");

}

我知道当有这样的数组时你需要进行转换,但它仍然无法编译。我不明白问题是什么。请帮忙。

谢谢。

最佳答案

您将获得 ClassCastException因为Object[]不是HashMap[] .

可以通过编写以下内容来解决它:

@SuppressWarnings("unchecked")
public void openFile (int num_of_nodes, String path) {
In in = new In(path);
graph = (HashMap<Integer, Integer> []) new HashMap[num_of_nodes];

我不推荐这样做(用粗体写,因为当我在答案中写 @SuppressWarnings("unchecked") 时,我通常会被否决)。

更好的解决方案是使用 List<Map<Integer, Integer>> 。泛型和数组不能很好地结合在一起。

关于java - 通用数组 - 无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33085968/

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