我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
我想创建一个如下所示的数组列表:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4];
但它不是编译。我该怎么做呢?
当前回答
为了静态地声明一个数组列表数组,例如,精灵位置为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<?>[] items = new ArrayList[4];
ArrayList<Chocolate> choc = new ArrayList<>();
ArrayList<Chips> chips = new ArrayList<>();
ArrayList<Water> water = new ArrayList<>();
ArrayList<SoftDrink> sd = new ArrayList<>();
因为数组中的每个数组列表都包含不同的对象(巧克力,薯条,水和软饮料) 这是一个模拟自动售货机的项目。 然后我将每个数组列表赋值给数组的一个下标:
items[0]=choc;
items[1]=chips;
items[2]=water;
items[3]=sd;
希望这对遇到类似问题的人有所帮助。
可以创建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<Integer>[] graph = new ArrayList[numCourses] 它的工作原理。
如果你想避免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];