我想创建一个如下所示的数组列表:

ArrayList<Individual>[] group = new ArrayList<Individual>()[4];

但它不是编译。我该怎么做呢?


当前回答

我发现这个更容易使用…

static ArrayList<Individual> group[];
......
void initializeGroup(int size)
{
 group=new ArrayList[size];
 for(int i=0;i<size;i++)
 {
  group[i]=new ArrayList<Individual>();
 }

其他回答

可以创建一个扩展ArrayList的类

class IndividualList extends ArrayList<Individual> {

}

然后创建数组

IndividualList[] group = new IndividualList[10];

你可以做到的。创建ArrayList类型的Array

ArrayList<Integer>[] a = new ArrayList[n];

为数组中的每个元素创建一个数组列表

for(int i = 0; i < n; i++){ 
    a[i] = new ArrayList<Integer>();
}

这种情况的问题是,通过使用数组列表,在特定位置进行加法,你会得到o(n)的时间复杂度。如果使用数组,则通过声明数组来创建内存位置,因此它是常量

正如其他人提到的,使用另一个List来存储数组列表可能更好,但如果你必须使用数组:

ArrayList<Individual>[] group = (ArrayList<Individual>[]) new ArrayList[4];

您需要取消警告,但在这种情况下是安全的。

创建和初始化 对象[]yourArray = new对象[ARRAY_LENGTH]; 写访问 yourArray[我]= someArrayList; 访问内部数组列表的元素: ((ArrayList < YourType >) yourArray[我])阀门(elementOfYourType);//或其他方法 读访问 将数组元素i读取为数组列表使用类型转换: someElement= (ArrayList<YourType>) yourArray[i]; 对于数组元素i:读取数组列表元素在索引j处的值 arrayListElement= (ArrayList<YourType>) yourArray[i]).get(j);