Java 如何将ArrayList转换为数组数组?
我正在做大学二年级的软件工程项目,遇到了一个问题。我对Java语言(以及一般的编程)相当陌生,因此有可能我对语法理解不好 我有一个方法,我想用来返回Object类型的数组数组。这将在swing JTable中使用。因此,数组的每个元素(即数组本身)都是表中的行,“内部”数组的元素是该行中每列的值 我不知道编码时会有多少列,因此我创建了一个方法来生成依赖于其他对象的数组数组 这是我的代码:Java 如何将ArrayList转换为数组数组?,java,arrays,collections,multidimensional-array,arraylist,Java,Arrays,Collections,Multidimensional Array,Arraylist,我正在做大学二年级的软件工程项目,遇到了一个问题。我对Java语言(以及一般的编程)相当陌生,因此有可能我对语法理解不好 我有一个方法,我想用来返回Object类型的数组数组。这将在swing JTable中使用。因此,数组的每个元素(即数组本身)都是表中的行,“内部”数组的元素是该行中每列的值 我不知道编码时会有多少列,因此我创建了一个方法来生成依赖于其他对象的数组数组 这是我的代码: public Object[][] getData(ArrayList<IModule>
public Object[][] getData(ArrayList<IModule> modules) {
ArrayList<String[]> data = new ArrayList();
for (Iterator<IModule> m = modules.iterator() ; m.hasNext(); ) {
IModule module = m.next();
for (Iterator<ICoursework> c = module.getCoursework().iterator() ; c.hasNext() ; ) {
ICoursework coursework = c.next();
String[] row = new String[6];
row[0] = module.getModuleTitle();
row[1] = module.getModuleCode();
row[2] = coursework.getTitle();
row[3] = coursework.dateToString();
row[4] = coursework.getLecturer().getFirstName()
+ coursework.getLecturer().getSecondName();
row[5] = getSubmissionDetails(coursework, row);
data.add(row);
}
}
data.trimToSize();
return data.toArray();
}
public Object[][]获取数据(ArrayList模块){
ArrayList数据=新的ArrayList();
for(迭代器m=modules.Iterator();m.hasNext();){
IModule模块=m.next();
for(迭代器c=module.getCoursework().Iterator();c.hasNext();){
ICoursework coursework=c.next();
字符串[]行=新字符串[6];
行[0]=module.getModuleTitle();
行[1]=module.getModuleCode();
行[2]=coursework.getTitle();
行[3]=coursework.dateToString();
第[4]行=coursework.Get讲师().getFirstName()
+课程作业。Get讲师().getSecondName();
行[5]=获取提交详细信息(课程作业,行);
添加数据(行);
}
}
data.trimToSize();
返回data.toArray();
}
这显然不能编译,因为ArrayList.toArray()方法返回一个对象[],我需要它返回一个对象[]
据我所知,因为我有一个数组的ArrayList,所以应该将它转换为一个包含数组的数组。但事实并非如此
如果你能发布一个答案,那会很有帮助。谢谢。尝试
返回数据。toArray(新字符串[][])代码>你不能那样做。尝试:
public Object[][] getData(ArrayList<IModule> modules) {
ArrayList<String[]> data = new ArrayList<String[]>();
for (Iterator<IModule> m = modules.iterator() ; m.hasNext(); ) {
IModule module = m.next();
for (Iterator<ICoursework> c = module.getCoursework().iterator() ; c.hasNext() ; ) {
ICoursework coursework = c.next();
String[] row = new String[6];
row[0] = module.getModuleTitle();
row[1] = module.getModuleCode();
row[2] = coursework.getTitle();
row[3] = coursework.dateToString();
row[4] = coursework.getLecturer().getFirstName()
+ coursework.getLecturer().getSecondName();
row[5] = getSubmissionDetails(coursework, row);
data.add(row);
}
}
Object[][] arr = new Object[data.size()][6];
for (int i = 0; i < data.size(); i++) {
String[] strings = data.get(i);
for (int j = 0; j < strings.length; j++) {
arr[i][j] = strings[j];
}
}
return arr;
}
public Object[][]获取数据(ArrayList模块){
ArrayList数据=新的ArrayList();
for(迭代器m=modules.Iterator();m.hasNext();){
IModule模块=m.next();
for(迭代器c=module.getCoursework().Iterator();c.hasNext();){
ICoursework coursework=c.next();
字符串[]行=新字符串[6];
行[0]=module.getModuleTitle();
行[1]=module.getModuleCode();
行[2]=coursework.getTitle();
行[3]=coursework.dateToString();
第[4]行=coursework.Get讲师().getFirstName()
+课程作业。Get讲师().getSecondName();
行[5]=获取提交详细信息(课程作业,行);
添加数据(行);
}
}
Object[]arr=新对象[data.size()][6];
对于(int i=0;i
首先它说数组需要一个维度。但是,即使我放入任意维度,它仍然表示它需要对象[],但找到字符串[]。抱歉返回数据。toArray(新字符串[]])
谢谢。尽管如此,它仍然要求尺寸。我是多维数组的新手,维度应该是什么。目前我有一个新字符串[data.size()]。对吗?谢谢。我帮了大忙:)