我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
当前回答
你可以做到的。创建ArrayList类型的Array
ArrayList<Integer>[] a = new ArrayList[n];
为数组中的每个元素创建一个数组列表
for(int i = 0; i < n; i++){
a[i] = new ArrayList<Integer>();
}
其他回答
如果你想避免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];
你可以做到的。创建ArrayList类型的Array
ArrayList<Integer>[] a = new ArrayList[n];
为数组中的每个元素创建一个数组列表
for(int i = 0; i < n; i++){
a[i] = new ArrayList<Integer>();
}
正如其他人提到的,使用另一个List来存储数组列表可能更好,但如果你必须使用数组:
ArrayList<Individual>[] group = (ArrayList<Individual>[]) new ArrayList[4];
您需要取消警告,但在这种情况下是安全的。
如此:
ArrayList<String>[] group = new ArrayList[4];
尽管它会产生一个你可能想要抑制的警告。
这种情况的问题是,通过使用数组列表,在特定位置进行加法,你会得到o(n)的时间复杂度。如果使用数组,则通过声明数组来创建内存位置,因此它是常量