这似乎是一个基本问题,但它确实让我很困惑.我试图表示图的邻接列表.我有两个问题:
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
}
}
Run Code Online (Sandbox Code Playgroud)
问题1:当我执行以下操作时,它会出错
Array type expected; found: 'java.util.LinkedList<java.lang.Integer>'
this.adj = (List<Integer>[]) new LinkedList<Integer>()[V];
Run Code Online (Sandbox Code Playgroud)
我正在创建一个Integer数组列表,对吧?
问题2:当我这样做时,它再次给出了一个错误,说明通用数组的创建:
this.adj = (List<Integer>[]) new LinkedList<Integer>[V];
Run Code Online (Sandbox Code Playgroud)
最后两种方法有什么问题?我认为第一个更正确.
在(1)中,表达式被解析为
(new LinkedList<Integer>())[V]
Run Code Online (Sandbox Code Playgroud)
它试图索引新创建的LinkedList
,因此错误.
在(2)中,您正在尝试制作一系列泛型.你不能这样做.相反,请考虑使用某种容器类型(如a ArrayList<List<Integer>>
).
归档时间: |
|
查看次数: |
1084 次 |
最近记录: |