代表列表数组

One*_*ror 3 java arrays list

这似乎是一个基本问题,但它确实让我很困惑.我试图表示图的邻接列表.我有两个问题:

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)

最后两种方法有什么问题?我认为第一个更正确.

nne*_*neo 5

在(1)中,表达式被解析为

(new LinkedList<Integer>())[V]
Run Code Online (Sandbox Code Playgroud)

它试图索引新创建的LinkedList,因此错误.

在(2)中,您正在尝试制作一系列泛型.你不能这样做.相反,请考虑使用某种容器类型(如a ArrayList<List<Integer>>).