所以我在这里有这个方法。这是创建一个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的初学者。
答案 0 :(得分:2)
您可以创建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);
其中j
是caches
列表中所需元素的索引。
或者,如果您需要对每个存储的缓存执行某些操作,您可以迭代列表:
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;
}
答案 1 :(得分:1)
您可以使用像
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);