代表列表数组

时间:2014-12-21 04:50:46

标签: 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
    }
}

问题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]; 

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

2 个答案:

答案 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>();
    }