[英]2D array of ArrayLists vs 3D ArrayList in Java
我需要在固定长度的2D数组中存储未知数量的对象的列表。 示例我有一个二维数组:
int[][] clashesMatrix = new int[noOfExams][noOfExams];
在每个clashesMatrix位置,我需要一个带有Student对象的动态大小的数组列表。 我试图这样做:
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的2nd选项,什么是初始化所有arraylist的最佳方法是什么,因为当然,一开始一切都是空的? 遍历和初始化我需要的所有数组列表是否会产生开销?
您可以尝试这样做,但会收到编译器警告
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上找到有关此信息的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.