我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
当前回答
根据Oracle文档:
不能创建参数化类型的数组
相反,你可以这样做:
ArrayList<ArrayList<Individual>> group = new ArrayList<ArrayList<Individual>>(4);
正如Tom Hawting - tackline所建议的那样,更好的做法是:
List<List<Individual>> group = new ArrayList<List<Individual>>(4);
其他回答
你可以这样做 ArrayList<Individual>[] group = (ArrayList<Individual>[])new ArrayList[4];
您必须创建非泛型类型的数组,然后将其转换为泛型类型。
正如其他人提到的,使用另一个List来存储数组列表可能更好,但如果你必须使用数组:
ArrayList<Individual>[] group = (ArrayList<Individual>[]) new ArrayList[4];
您需要取消警告,但在这种情况下是安全的。
如此:
ArrayList<String>[] group = new ArrayList[4];
尽管它会产生一个你可能想要抑制的警告。
我发现这个更容易使用…
static ArrayList<Individual> group[];
......
void initializeGroup(int size)
{
group=new ArrayList[size];
for(int i=0;i<size;i++)
{
group[i]=new ArrayList<Individual>();
}
ArrayList<String> al[] = new ArrayList[n+1];
for(int i = 0;i<n;i++){
al[i] = new ArrayList<String>();
}