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