簡體   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