[英]Converting 2D array to 1D Array without using ArrayList
创建将2d数组转换为1D数组的函数
但是在声明时,一维数组的大小如何为新一维数组赋予大小
int[] convert(int[][] input){
int[] result;
int z=0;
for(int row=0;row<input.length;row++) {
for(int col=0;col<input[row].length;col++) {
result[z]=input[row][col];
z++;
}
}
return result;/* Error comes here For Initialization. How to initialize before Knowing size*/
}
行和列是否平衡
int result[] = new int[input.length * input[0].length];
否则,您必须遍历整个数组,同时保持长度计数
int len = 0;
for(int[] a : input){
len+=a.length;
}
int[] result = new int[len];
您可以通过这种方式简单地计算大小(即行数* 列数 ):
int[] result = new int[input.length * input[0].length] ;
1)如果是矩形2D数组,则以这种方式计算大小
int array[] = new int[input.length * input[0].length];
2)如果不是矩形,则遍历每一行并添加每个子数组的长度
int size = 0;
for(int i=0;i<input.length;i++){
size += input[i].length;
}
或者您可以只使用流而不必自己照顾大小:
int[] convert(int[][] input){
return Stream.of(input).flatMapToInt(x -> Arrays.stream(x)).toArray();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.