我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
当前回答
如此:
ArrayList<String>[] group = new ArrayList[4];
尽管它会产生一个你可能想要抑制的警告。
其他回答
不能创建泛型类型的数组。创建数组列表:
List<ArrayList<Individual>> group = new ArrayList<ArrayList<Individual>>();
或者如果你真的需要数组(警告:糟糕的设计!):
ArrayList[] group = new ArrayList[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);
可以创建一个扩展ArrayList的类
class IndividualList extends ArrayList<Individual> {
}
然后创建数组
IndividualList[] group = new IndividualList[10];
你可以创建一个List[]并通过for循环初始化它们。它编译时没有错误:
List<e>[] l;
for(int i = 0; i < l.length; i++){
l[i] = new ArrayList<e>();
}
它也适用于arrayList[] l。