我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
当前回答
你可以这样做 ArrayList<Individual>[] group = (ArrayList<Individual>[])new ArrayList[4];
您必须创建非泛型类型的数组,然后将其转换为泛型类型。
其他回答
可以创建Array或ArrayList
List<Integer>[] outer = new List[number];
for (int i = 0; i < number; i++) {
outer[i] = new ArrayList<>();
}
这在这种情况下很有帮助。你知道外面那个的尺寸。但是内部的大小是不同的。在这里,您可以创建一个固定长度的数组,其中包含大小变化的数组列表。希望这对你有所帮助。
在Java 8及以上版本中,你可以以一种更好的方式做到这一点。
List<Integer>[] outer = new List[number];
Arrays.setAll(outer, element -> new ArrayList<>());
ArrayList<String> al[] = new ArrayList[n+1];
for(int i = 0;i<n;i++){
al[i] = new ArrayList<String>();
}
List[] listArr = new ArrayList[4];
上面这行给出了警告,但它是有效的(即它创建了ArrayList的数组)
如果你想避免Java警告,并且仍然有一个数组列表数组,你可以将数组列表抽象为一个类,就像这样:
public class Individuals {
private ArrayList<Individual> individuals;
public Individuals() {
this.individuals = new ArrayList<>();
}
public ArrayList<Individual> getIndividuals() {
return individuals;
}
}
那么你就可以安全地拥有:
Individuals[] group = new Individuals[4];
不能创建泛型类型的数组。创建数组列表:
List<ArrayList<Individual>> group = new ArrayList<ArrayList<Individual>>();
或者如果你真的需要数组(警告:糟糕的设计!):
ArrayList[] group = new ArrayList[4];