Java中的ArrayLists与3D ArrayList的2D数组

时间:2014-04-05 11:45:35

标签: java arrays arraylist

我需要在固定长度的2D数组中存储未知数量的对象列表。示例I有一个二维数组:

int[][] clashesMatrix = new int[noOfExams][noOfExams];

并且在每个clashesMatrix位置我都需要一个带有Student对象的动态大小的arraylist。 我试着这样做:

ArrayList<Student>[][] clashesMatrix2 = new ArrayList<Student>[][];

但是这会产生语法错误:Cannot create a generic array of ArrayList<Student>。有没有办法可以用这个来实现我的目标?

当然还有另一种选择是拥有3维ArrayList

ArrayList<ArrayList<ArrayList<Student>>> clashesMatrix = new ArrayList<ArrayList<ArrayList<Student>>>();

您建议将此用途用于此目的?如果我使用3D arraylists的第二个选项,那么初始化所有arraylist的最佳方法是什么,因为当然在开始时一切都将为null?这是否需要循环并初始化我需要的所有arraylists?

1 个答案:

答案 0 :(得分:0)

你可以试试这个,但你会得到一个编译器警告

ArrayList<Student>[][] clashesMatrix2 = (ArrayList<Student>[][]) java.lang.reflect.Array.newInstance(ArrayList.class,noOfExams,noOfExams);

你可以这样做来抑制警告

@SuppressWarnings("unchecked")
ArrayList<Student>[][] clashesMatrix2 = (ArrayList<Student>[][]) java.lang.reflect.Array.newInstance(ArrayList.class,noOfExams,noOfExams);

有关此内容的更多信息,请访问http://www.ibm.com/developerworks/java/library/j-jtp01255/index.html