这似乎是一个基本问题,但它确实让我很困惑。我试图表示图的邻接列表。我有两个问题:
public class Graph
{
private final int V;
private List<Integer>[] adj;
public Graph(int V)
{
this.V = V;
this.adj = (List<Integer>[]) new LinkedList[V]; // this works
}
}
问题1 :当我执行以下操作时,会出错
Array type expected; found: 'java.util.LinkedList<java.lang.Integer>'
this.adj = (List<Integer>[]) new LinkedList<Integer>()[V];
我正在创建一个整数数组列表,对吗?
问题2 :当我这样做时,它再次出现错误,说明通用数组的创建:
this.adj = (List<Integer>[]) new LinkedList<Integer>[V];
最后两种方法有什么问题?我认为第一个更正确。
答案 0 :(得分:5)
在(1)中,您的表达式被解析为
(new LinkedList<Integer>())[V]
试图索引新创建的LinkedList
,因此错误。
在(2)中,您正在尝试制作一系列泛型。 You can't do this。相反,请考虑使用某种容器类型(如ArrayList<List<Integer>>
)。
答案 1 :(得分:0)
您正在尝试创建一个整数列表数组。这意味着每个索引可以有多个计数。因此,您需要初始化每个索引。
public Graph(int v)
{
V = v;
adj = new List<int>[v];
for (int i = 0; i < v; ++i)
adj[i] = new List<int>();
}