Java 如何将参差不齐的二维阵列转换为矩形二维阵列?
创建一个方法Java 如何将参差不齐的二维阵列转换为矩形二维阵列?,java,arrays,multidimensional-array,jagged-arrays,Java,Arrays,Multidimensional Array,Jagged Arrays,创建一个方法cleanMatrix,该方法接受一个不规则的2Dint数组,并返回一个具有相同值的矩形数组 例如: 输入: {{1, 2, 3, 3, 1, 7}, {6, 8, 7, 1}, {2, 3, 4, 5, 11}, {12}} 输出: {{1, 2, 3, 3, 1, 7}, {6, 8, 7, 1, 0, 0}, {2, 3, 4, 5, 11, 0}, {12, 0, 0, 0, 0, 0}} Int数组初始化为0,因此您可以在需要时扩展子数组。 解决方案可能看起来有点像这样
cleanMatrix
,该方法接受一个不规则的2Dint
数组,并返回一个具有相同值的矩形数组
例如:
输入:
{{1, 2, 3, 3, 1, 7},
{6, 8, 7, 1},
{2, 3, 4, 5, 11},
{12}}
输出:
{{1, 2, 3, 3, 1, 7},
{6, 8, 7, 1, 0, 0},
{2, 3, 4, 5, 11, 0},
{12, 0, 0, 0, 0, 0}}
Int数组初始化为0,因此您可以在需要时扩展子数组。 解决方案可能看起来有点像这样(未经测试)
int[]source=;
最终整数neededSize=;
for(int i=0;i
如果必须将锯齿状二维数组设置为矩形,则可以对每行使用方法并指定新长度:
int-length=6;
int[][]锯齿状={
{1, 2, 3, 3, 1, 7},
{6, 8, 7, 1},
{2, 3, 4, 5, 11},
{12}};
int[][]矩形=数组
.溪流(锯齿状)
.map(行->数组.copyOf(行,长度))
.toArray(int[]]::新建);
Arrays.stream(矩形).map(Arrays::toString).forEach(System.out::println);
//[1, 2, 3, 3, 1, 7]
//[6, 8, 7, 1, 0, 0]
//[2, 3, 4, 5, 11, 0]
//[12, 0, 0, 0, 0, 0]
int[][] source = <your source array>;
final int neededSize = <length you want extend the subs to>;
for(int i = 0; i < source.length; i++){
if(source[i].length < neededSize){
source[i] = getExtendedArray(source[i]);
}
}
int[] getExtendedArray(int[] originalArr){
int[] tempArr = new int[neededSize];
for(int x = 0; x < originalArr.length; x++){
tempArr[x] = originalArr[x];
}
}