簡體   English   中英

創建動態數組數組的最佳方法是什么

[英]what is the best way to create dynamic array of arrays of arrays

我有一個問題。 我需要創建一個由數組組成的數組。 我已經閱讀了一些有關在Java中創建動態數組的文章,但是我不確定應該選擇哪種方式。

第一個是聲明每個數組的最大可能大小int arr[][][] = new int[10000][10000][10000]; ,但就我而言,每個數組的大小取決於另一個數組的大小。 我的意思是每個數組都可能具有max數組的大小,如果我用這種方式聲明我的數組數組,則它將占用大量內存。

方法是使用ArrayList 但是我以前從未使用過它,我也不知道聲明ListArrayListArrays以及聲明ListArrayListArrayListArraysListArrays 另外,我不確定是否應該使用它,因為ListArray包含對象作為元素,並且如果我有一個像[10000][100][20]這樣的數組,那么我的內存使用情況和其他PC會發生什么情況資源?

第三個問題是,在最佳情況下,我不想將對象或任何其他數據類型變量作為數組的元素,而是鏈接到另一個數組元素的其他元素(我的意思是arr[z][x][y] = @arrOfStr[i] )。 雖然我從未在Java中使用鏈接,但我什至不知道是否可以將鏈接用作數組元素以及如何聲明數組。

伙計們,我真的需要這方面的幫助,因為我已經竭盡全力嘗試使用最少的pc資源來解決此問題。

任何幫助表示贊賞!

免責聲明:首先,這可能是一個糟糕的設計,因為非常罕見的列表必須嵌套得很深,或者完全嵌套。 您可能希望將其展平或使用SetMap 我的猜測是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM