Java 从给定的对象向量创建二维数组
我仍在努力理解Java编程,并遇到了这个挑战,我有一个表,希望通过这个DefaultTableModel将数据加载到其中Java 从给定的对象向量创建二维数组,java,arrays,vector,Java,Arrays,Vector,我仍在努力理解Java编程,并遇到了这个挑战,我有一个表,希望通过这个DefaultTableModel将数据加载到其中 private Vector <Object> Headings =new Vector <Object>(); private Vector <Object> Data = new Vector <Object> (); Headings = acquire.Account("StudentHeader");
private Vector <Object> Headings =new Vector <Object>();
private Vector <Object> Data = new Vector <Object> ();
Headings = acquire.Account("StudentHeader");
Data = acquire.Account("StudentData");
Object[] ids = Headings.toArray();
//Object[][] out = to2DimArray(Data);
DefaultTableModel model = new DefaultTableModel(out, ids);
根据需要,out是一个二维数组。问题是我不知道如何将数据传输/更改为表所需的二维数组。我尝试使用DefaultTableModel的向量形式,但是出现了一个错误,所以我决定使用数组形式来加载标题。
你能告诉我如何将向量转换成二维数组,这样我就可以加载我的表了吗?从逻辑上讲,向量是一个可调整大小的一维数组,所以我认为你不能将它转换成二维数组 我认为您可以扩展或创建of,然后创建自己的表模型,然后使用该模型实例化表,而不是使用 检查
它很好地解释了这个实现。您的数据对象是一个一维向量,因此无法将其直接转换为二维对象。 尝试将数据构建为向量,其中每个元素都是表中的一行 大概是这样的:
Vector <Object> headings = new Vector <Object>();
Vector <Vector<Object>> data = new Vector <Vector<Object>> ();
headings = acquire.Account("StudentHeader");
for(int i = 0 ; i < yourStudentDataNumber ; i++) {
Vector <Object> dataElement = new Vector <Object>();
dataElement = acquire.Account("StudentHeader");
//i don't know what is acquire object, this for loop is only an example
// however you need to build a Vector<Object> for each row of the table
data.add(dataElement);
}
Object[] ids = headings.toArray();
int numberOfRow = data.size();
Object[][] bidimArray = new Object[numberOfRow][];
for(int i = 0 ; i < numberOfRow ; i++) {
bidimArray[i] = data.get(i).toArray();
}
DefaultTableModel model = new DefaultTableModel(bidimArray, ids);
好的,这就是我从中得到的,它起了作用:
Vector <Object> Headings =new Vector <Object>();
Vector <Object> Data = new Vector <Object> ();
Vector <Object> Extract = new Vector <Object> ();
Headings = acquire.Account("IncomeHeader");
Data = acquire.Account("IncomeData");
int DataSize = Data.size(); int colum = Headings.size();
int round = DataSize/colum; int cover = DataSize; int t =1;
while(t<=round){
Extract = getVector(Data, colum);
model.addRow(Extract);
t++;
}
private Vector<Object> getVector(Vector<Object> data, int colum) {
Vector vector = new Vector(); int h = data.size(); int r = 0;
while(h>s){
r++;
vector.add(data.get(s));
s++;
if(r==colum){
System.out.println("vector: "+vector);
return vector;
}
}
return null;
}
问题是我想向表中添加列和行。我不知道如何使用abstractTableModel做到这一点,但我知道如何使用DefaultTableModel做到这一点。是否有一种方法可以使用Abstracttablemodel添加列和行,您可以帮助我,因为认真地使用抽象是非常容易的。我尝试了一种类似的方法,它确实起了作用,就像我现在要粘贴的东西,如果它起作用的话。谢谢。
Vector <Object> Headings =new Vector <Object>();
Vector <Object> Data = new Vector <Object> ();
Vector <Object> Extract = new Vector <Object> ();
Headings = acquire.Account("IncomeHeader");
Data = acquire.Account("IncomeData");
int DataSize = Data.size(); int colum = Headings.size();
int round = DataSize/colum; int cover = DataSize; int t =1;
while(t<=round){
Extract = getVector(Data, colum);
model.addRow(Extract);
t++;
}
private Vector<Object> getVector(Vector<Object> data, int colum) {
Vector vector = new Vector(); int h = data.size(); int r = 0;
while(h>s){
r++;
vector.add(data.get(s));
s++;
if(r==colum){
System.out.println("vector: "+vector);
return vector;
}
}
return null;
}