我需要在固定长度的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?
答案 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