有人可以分解这一行,以便我能理解吗?

tal*_*ees 2 java

我无法理解如何在Java中初始化ArrayLists数组,有人可以解释这行代码中发生了什么吗?

edges = (ArrayList<Integer>[]) new ArrayList[nodeCount + 1];
Run Code Online (Sandbox Code Playgroud)

Lev*_*usa 6

让我们逐个地打破它.
edges是一个类型的变量ArrayList<Integer>[]
=是assign运算符,它将右手分配给左手
(ArrayList<Integer>[])是变量的类型转换.
new ArrayList[nodeCount + 1]意味着我们为ArrayList具有nodeCount+1未知元素的数组分配空间.

这是初始化数组的一种非常糟糕的方法.它的作用是创建一个数组并使元素成为整数.

替代: edges = new ArrayList<Integer>(nodeCount+1);

说明:ArrayList类有可以指定它的长度*构造,这就是我在这里使用.
注意:根据@Rohit Jain,它没有指定长度,而是指定初始容量.