簡體   English   中英

將2D數組存儲到數組中?

[英]Store a 2D array into an array?

所以我在這里有這個方法。 這是創建一個2D數組。

public static int[][] createCacheArray(int cacheSize, int blockSize, int[] memory, int i) {

    //Create multi-dimension array for cache.

    int [][] cache = new int [cacheSize/blockSize][blockSize];

    for (int column = 0; column < blockSize; column++) {
      for (int row = 0; row < cache.length; row++) {
           cache[row][column] = memory[i];
           i++;
      } 
    }

    return cache;

}

我想將創建的Cache 2D數組存儲到一維數組中,因為我將使用相同的方法制作多個2D緩存數組,我想組織它們。

基本上我想去一個Cache二維數組所在的數組[數字],然后讀取該緩存二維數組的內容。 如果有另一種方法,我會很樂意欣賞它。

另一種方法是:

 cache = createCacheArray(cacheSize, blockSize, memory, (cacheSize * 0)); cache1 = createCacheArray(cacheSize, blockSize, memory, (cacheSize * 1)); cache2 = createCacheArray(cacheSize, blockSize, memory, (cacheSize * 2)); cache3 = createCacheArray(cacheSize, blockSize, memory, (cacheSize * 3)); 

這里,緩存是2D陣列,cache1是2D陣列,緩存2是2D陣列等等,但這是不方便的。 我問的原因是因為這些是固定的64x16 2D陣列。 如果數組被填充,那么我必須制作另一個具有相同大小的2D數組。 而不是制作多個變量,我認為有可能以某種方式將這些變量存儲到數組中。 就像二維陣列一樣,書籍和一維陣列就是書架。

==================

2D陣列內部有數字。

在做了AndersonVieira的建議之后,我的所有2D數組都存儲在ArrayList中。 太棒了。

我現在要做的就是在ArrayList中的所有2D數組中搜索特定數字。 但我不知道要寫什么代碼來做這件事。 我還是Java的初學者。

您可以創建一個List<int[][]>並將緩存存儲在那里:

List<int[][]> caches = new ArrayList<>();
for (int i = 0; i < numCaches; i++) {
    caches.add(createCacheArray(cacheSize, blockSize, memory, (cacheSize * i)));
}

然后,您可以通過執行以下操作來訪問緩存:

int[][] cache = caches.get(j);

其中jcaches列表中所需元素的索引。

或者,如果您需要對每個存儲的緩存執行某些操作,則可以迭代列表:

for (int[][] cache : caches) {
    doSomething(cache);
}

與使用3D陣列相比,這可能更容易使用。

編輯:

要檢查二維數組是否包含元素,您需要循環遍歷將位置值與所需值進行比較的所有位置:

static boolean contains(int element, int[][] cache) {
    for (int i = 0; i < cache.length; i++) {
        for (j = 0; j < cache[i].length; j++) {
            if (cache[i][j] == element) {
                return true;
            }
        }
    }
    return false;
}

然后,您可以創建一個返回包含指定元素的第一個緩存的方法,否則返回null

static int[][] cacheContaining(int element, List<int[][]> caches) {
    for (int[][] cache : caches) {
        if (contains(element, cache)) {
            return cache;
        }
    }
    return null;
}

你可以使用像3d一樣的數組,

int[][][] cache = {
    createCacheArray(cacheSize, blockSize, memory, (cacheSize * 0)),
    createCacheArray(cacheSize, blockSize, memory, (cacheSize * 1)),
    createCacheArray(cacheSize, blockSize, memory, (cacheSize * 2)),
    createCacheArray(cacheSize, blockSize, memory, (cacheSize * 3))
};
System.out.println(Arrays.deepToString(cache);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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