Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将二维阵列转换为原始阵列支持的二维阵列列表_Java_Arrays_Arraylist_Multidimensional Array - Fatal编程技术网

Java 将二维阵列转换为原始阵列支持的二维阵列列表

Java 将二维阵列转换为原始阵列支持的二维阵列列表,java,arrays,arraylist,multidimensional-array,Java,Arrays,Arraylist,Multidimensional Array,我已经看了各种各样的例子来说明如何做到这一点,我已经到了这个阶段。我的数据导入被复制到数组列表中,但我没有看到我认为会出现的数据 当我使用2D数组时,它会很好地显示导入的数据,但我希望能够对数据进行更改,从而得到数组列表。我需要数据来填充两件事,首先是一个Java表,然后在导出到电子表格时重用数据。如果你能帮我把二维数组转换成二维数组(如果这是我需要的)ArrayList,那就太好了 ArrayList student_data=new ArrayList(); System.out.print

我已经看了各种各样的例子来说明如何做到这一点,我已经到了这个阶段。我的数据导入被复制到数组列表中,但我没有看到我认为会出现的数据

当我使用2D数组时,它会很好地显示导入的数据,但我希望能够对数据进行更改,从而得到数组列表。我需要数据来填充两件事,首先是一个Java表,然后在导出到电子表格时重用数据。如果你能帮我把二维数组转换成二维数组(如果这是我需要的)
ArrayList
,那就太好了

ArrayList student_data=new ArrayList();
System.out.println(DataImport.DataImport(file\u path).length);
System.out.println(Arrays.deepToString(DataImport.DataImport(文件路径));
for(int i=0;i
var rawData=DataImport.DataImport(文件路径)
b) 第二个j循环应该迭代到
rawData[i]。长度

c) 最重要的是。你应该在i循环之前创建外部列表,在j循环之前创建内部列表。在j循环内部,将数据添加到内部列表。在j循环之后,将此内部列表添加到外部

差不多

var rawData=DataImport.DataImport(文件路径)
var studentList=新列表
对于(int i=0;i
a)在循环之前只执行一次数据导入。数据导入(文件路径)在循环中不需要一直读取

var rawData=DataImport.DataImport(文件路径)
b) 第二个j循环应该迭代到
rawData[i]。长度

c) 最重要的是。你应该在i循环之前创建外部列表,在j循环之前创建内部列表。在j循环内部,将数据添加到内部列表。在j循环之后,将此内部列表添加到外部

差不多

var rawData=DataImport.DataImport(文件路径)
var studentList=新列表
对于(int i=0;i
我不知道是否
DataImport.DataImport(file\u path)
是一个非常快速的调用,但即使是重复调用,也不应该重复调用。只调用一次也会提高代码的可读性

由于您希望将二维数组转换为二维列表,因此肯定不希望使用
Collections.singleton()
。相反,您希望在外部循环中创建一个列表

String[][]data=DataImport.DataImport(文件路径);
System.out.println(数据长度);
System.out.println(数组.deepToString(数据));
ArrayList student_data=新的ArrayList();
for(字符串[]行:数据){
ArrayList=新建ArrayList();
for(字符串值:行){
列表。添加(值);
}
学生数据。添加(列表);
}
可以使用
Arrays.asList()
helper方法消除内部循环:

String[][]data=DataImport.DataImport(文件路径);
ArrayList student_data=新的ArrayList();
for(字符串[]行:数据)
student_data.add(新的ArrayList(Arrays.asList(row));
如果您想使用Java 8流,可以这样做:

String[][]data=DataImport.DataImport(文件路径);
List student_data=Arrays.stream(数据)
.map(行->数组.stream(行).collect(收集器.toList())
.collect(Collectors.toList());

我不知道是否
DataImport.DataImport(file\u path)
是一个非常快速的调用,但即使是重复调用,也不应该重复调用。只调用一次也会提高代码的可读性

由于您希望将二维数组转换为二维列表,因此肯定不希望使用
Collections.singleton()
。相反,您希望在外部循环中创建一个列表

String[][]data=DataImport.DataImport(文件路径);
System.out.println(数据长度);
System.out.println(数组.deepToString(数据));
ArrayList student_data=新的ArrayList();
for(字符串[]行:数据){
ArrayList=新建ArrayList();
for(字符串值:行){
列表。添加(值);
}
学生数据。添加(列表);
}
可以使用
Arrays.asList()
helper方法消除内部循环:

String[][]data=DataImport.DataImport(文件路径);
ArrayList student_data=新的ArrayList();
for(字符串[]行:数据)
student_data.add(新的ArrayList(Arrays.asList(row));
如果您想使用Java 8流,可以这样做:

String[][]data=DataImport.DataImport(文件路径);
List student_data=Arrays.stream(数据)
.map(行->数组.stream(行).collect(收集器.toList())
.collect(Collectors.toList());

因此,最后,在理解了Akif Hadziabdic发布的方法之后,我开发了自己的解决方案。我在下面发布了它,以防其他人也有同样的问题。 根据arraylist的指导,我只需在现有arraylist的第一行迭代中创建一个新的arraylist

ArrayList student_data=new ArrayList();
for(int i=0;i对于(int j=0;j所以最后,在理解了Akif Hadziabdic发布的方法之后,我开发了自己的解决方案。我在下面发布了它,以防其他人也有同样的问题。
根据arraylist的指导,我只需在现有arraylist的第一行迭代中创建一个新的arraylist

ArrayList student_data=new ArrayList();
对于(int i=0;i