Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Vector - Fatal编程技术网

Java 从给定的对象向量创建二维数组

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");

我仍在努力理解Java编程,并遇到了这个挑战,我有一个表,希望通过这个DefaultTableModel将数据加载到其中

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;
}