[英]what is the best way to create dynamic array of arrays of arrays
我有一個問題。 我需要創建一個由數組組成的數組。 我已經閱讀了一些有關在Java中創建動態數組的文章,但是我不確定應該選擇哪種方式。
第一個是聲明每個數組的最大可能大小int arr[][][] = new int[10000][10000][10000];
,但就我而言,每個數組的大小取決於另一個數組的大小。 我的意思是每個數組都可能具有max數組的大小,如果我用這種方式聲明我的數組數組,則它將占用大量內存。
方法是使用ArrayList
。 但是我以前從未使用過它,我也不知道聲明ListArray
的ListArrays
以及聲明ListArray
的ListArray
的ListArrays
的ListArrays
。 另外,我不確定是否應該使用它,因為ListArray
包含對象作為元素,並且如果我有一個像[10000][100][20]
這樣的數組,那么我的內存使用情況和其他PC會發生什么情況資源?
第三個問題是,在最佳情況下,我不想將對象或任何其他數據類型變量作為數組的元素,而是鏈接到另一個數組元素的其他元素(我的意思是arr[z][x][y] = @arrOfStr[i]
)。 雖然我從未在Java中使用鏈接,但我什至不知道是否可以將鏈接用作數組元素以及如何聲明數組。
伙計們,我真的需要這方面的幫助,因為我已經竭盡全力嘗試使用最少的pc資源來解決此問題。
任何幫助表示贊賞!
免責聲明:首先,這可能是一個糟糕的設計,因為非常罕見的列表必須嵌套得很深,或者完全嵌套。 您可能希望將其展平或使用Set
或Map
。 我的猜測是Map
因為您會從第三列表中得到什么有意義的信息? 好吧,如果“ 3rd”有意義,那么map.add(3, myInt)
是訪問它的更好方法。
盡管如此,語法還是很微妙的,因此這里是一個工作代碼示例。
但是我以前從未使用過它,並且我不知道聲明ListArrays的ListArray的語法,而且不知道ListArrays的ListArrays的ListArray的語法。
所以這是你的問題。
List<Integer> array1 = new ArrayList<>(); //java 7 only
List<List<Integer>> array2 = new ArrayList<>();
array2.add(array1);
// ...
依此類推。
創建10x10x10列表並填充一些數字的示例代碼:
List<List<List<Integer>>> list = new ArrayList<>();
int n = 0;
for(int i = 0; i < 10; i++) {
List<List<Integer>> list2 = new ArrayList<>();
list.add(list2);
for(int j = 0; j < 10; j++) {
List<Integer> list3 = new ArrayList();
list2.add(list3);
for(int k = 0; k < 10; k++) {
list3.add(n++);
}
}
}
更明確地說-這樣做:
import java.awt.Point;
Point
通常用於圖形情況,我懷疑您只需要一對整數。 您可以使用Apache的不可變點類,也可以滾動自己的類 ,如果要進行后者,請記住實現hashCode()
。
Map<Point, Integer> map = new Hashmap<>();
那里,一張地圖,沒有清單。 我強烈懷疑代碼中根本沒有理由只需要一個列表,而只是想通過它們的坐標來檢索事物。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.