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

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

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


当前回答

ArrayList<String> al[] = new ArrayList[n+1];
for(int i = 0;i<n;i++){
   al[i] = new ArrayList<String>();
}

其他回答

根据Oracle文档:

不能创建参数化类型的数组

相反,你可以这样做:

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

正如Tom Hawting - tackline所建议的那样,更好的做法是:

List<List<Individual>> group = new ArrayList<List<Individual>>(4);

不能创建泛型类型的数组。创建数组列表:

 List<ArrayList<Individual>> group = new ArrayList<ArrayList<Individual>>();

或者如果你真的需要数组(警告:糟糕的设计!):

 ArrayList[] group = new ArrayList[4];

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

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

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

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

为了静态地声明一个数组列表数组,例如,精灵位置为Points:

ArrayList<Point>[] positionList = new ArrayList[2];

public Main(---) {
    positionList[0] = new ArrayList<Point>(); // Important, or you will get a NullPointerException at runtime
    positionList[1] = new ArrayList<Point>();
}

动态:

ArrayList<Point>[] positionList;
int numberOfLists;

public Main(---) {
    numberOfLists = 2;
    positionList = new ArrayList[numberOfLists];
    for(int i = 0; i < numberOfLists; i++) {
        positionList[i] = new ArrayList<Point>();
    }
}

尽管这里有一些注意事项和一些复杂的建议,但我发现一个数组列表数组是表示相同类型的相关数组列表的一种优雅解决方案。

ArrayList<Integer>[] graph = new ArrayList[numCourses] 它的工作原理。