我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
当前回答
ArrayList<Integer>[] graph = new ArrayList[numCourses] 它的工作原理。
其他回答
你可以这样做 ArrayList<Individual>[] group = (ArrayList<Individual>[])new ArrayList[4];
您必须创建非泛型类型的数组,然后将其转换为泛型类型。
ArrayList<String>[] lists = (ArrayList<String>[])new ArrayList[10];
为了静态地声明一个数组列表数组,例如,精灵位置为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>();
}
}
尽管这里有一些注意事项和一些复杂的建议,但我发现一个数组列表数组是表示相同类型的相关数组列表的一种优雅解决方案。
根据Oracle文档:
不能创建参数化类型的数组
相反,你可以这样做:
ArrayList<ArrayList<Individual>> group = new ArrayList<ArrayList<Individual>>(4);
正如Tom Hawting - tackline所建议的那样,更好的做法是:
List<List<Individual>> group = new ArrayList<List<Individual>>(4);
你可以做到的。创建ArrayList类型的Array
ArrayList<Integer>[] a = new ArrayList[n];
为数组中的每个元素创建一个数组列表
for(int i = 0; i < n; i++){
a[i] = new ArrayList<Integer>();
}