繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM