簡體   English   中英

以特定方式乘以2d數組的大小?

[英]Multiplying size of 2d array in a specific way?

我環顧四周,但沒有找到答案。 用一個例子來解釋是最容易的。 假設我有一個2D數組,其值

{{1, 2, 3},
 {4, 5, 6}}

我想做的是乘以2d數組的大小,以使結果數組使每個元素重復x次(最好是32次)。 最終結果示例:

{{1, 1, 2, 2, 3, 3},
 {1, 1, 2, 2, 3, 3},
 {4, 4, 5, 5, 6, 6},
 {4, 4, 5, 5, 6, 6}}

在這種情況下,原始值乘以2,因此每個值乘以2乘以2。 有任何想法嗎?

假設您使用int:

int x = //...
int[][] input = //...
int[][] result = new int[input.length * x][];
final int size = input[0].length;

for (int i = 0; i < input.length; i++) {
    int[] inputArray = input[i];
    int[] array = new int[size * x];
    final int offset = i * x;

    result[offset] = array;

    // fill first of the equal lines
    for (int j = 0; j < size; j++) {
        final int offset2 = j * x;
        // copy every element x times
        Arrays.fill(array, offset2, offset2 + x, inputArray[j]);
    }

    // copy line x-1 times
    for (int j = 1; j < x; j++) {
        // if you needn't write to the result, use array as right hand side instead
        result[offset + j] = Arrays.copyOf(array, array.length);
    }
}

暫無
暫無

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

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