java - 二维数组串联

标签 java arrays multidimensional-array

我需要一个给定输入二维数组 {{1,2},{3,4}} 和 (int)row=2 的方法; (int)column = 3,将生成一个串联的二维数组 {{1,2,1,2,1,2}{3,4,3,4,3,4}}。

我尝试使用嵌套的 for 循环来水平和垂直扩展它们,但没有成功。这是我到目前为止所拥有的:

    int row = 2;
    int column = 5;
    int count = 0;
    int[][] list = {{12,3},{3,4}};

    int [][] renewed = new int[row*list.length][column*list[0].length]; 

    for (int l = 0; l<list.length; l++) {
        for (int k = 0; k<renewed.length; k+= list.length) {
            renewed[l+k] = list[l];
        }
    }        

    System.out.println(Arrays.deepToString(renewed));       
    }
}

^这会生成垂直扩展的列表[][],用于第一列

    int row = 2;
    int column = 4;
    int[][] list = {{12,3},{3,4}};

    int [][] renewed = new int[row*list.length][column*list[0].length]; 
    for (int i = 0; i<list[0].length; i++) {
        for (int j = 0; j<renewed[0].length; j+=list[0].length) {
            renewed[0][j+i] = list[0][i];
        }
    }

    System.out.println(Arrays.toString(renewed[0]));       
}

^这会生成水平扩展的列表[][],用于第一行;

那么我如何连接这两个方法来生成一个同时水平和垂直扩展的方法?

最佳答案

我认为最简单的方法是迭代新数组中的每个位置,并使用余数运算符 % 来获取原始数组的正确条目。

int[][] list = {{1,2},{3,4}};
int row = 2;
int column = 5;
int [][] renewed = new int[row*list.length][column*list[0].length];
for (int i = 0; i < renewed.length; i++) {
    for (int j = 0; j < renewed[0].length; j++) {
        renewed[i][j] = list[i % list.length][j % list[0].length];
    }
}
System.out.println(Arrays.deepToString(renewed));

关于java - 二维数组串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33713715/

相关文章:

java - Android 上的随机音乐播放器

javascript - 通过数组迭代设置对象键值对

javascript - 如何展平夹紧的阵列

javascript - 将输入的数据值保存到多维数组中

C++ 二维 vector 按列搜索

java - 如何过滤 Hadoop map/reduce 作业输出文件中的键或值?

java - 无法在 Java 中循环 ResultSet

java - 使用 Graphite 进行统计 - 来自无服务器基础设施

java - 尝试将 int 数组的内容复制到 Dimension 数组会导致 NullPointerException

java - 获取空数组而不是随机生成的整数数组