Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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/12.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 从ArrayList创建对象[][]的简单方法<;对象>;用物体的场_Java_Arrays_Optimization_Arraylist_Jtable - Fatal编程技术网

Java 从ArrayList创建对象[][]的简单方法<;对象>;用物体的场

Java 从ArrayList创建对象[][]的简单方法<;对象>;用物体的场,java,arrays,optimization,arraylist,jtable,Java,Arrays,Optimization,Arraylist,Jtable,因此,我用对象填充了这个ArrayList,我需要将其转换为对象[][],以便轻松地将其放入JTable中 例如: 我有一个数组列表: 我想从中得到的是一个具有以下列名的JTable: Color - Age - Eats Grass? 我当前的方法如下所示: List<Animal> ani = new ArrayList(); // Fill the list Object[][] arrayForTable = new Object[ani.size()][3]; for

因此,我用对象填充了这个
ArrayList
,我需要将其转换为
对象[][]
,以便轻松地将其放入
JTable

例如:

我有一个
数组列表

我想从中得到的是一个具有以下列名的JTable:

Color - Age - Eats Grass?
我当前的方法如下所示:

List<Animal> ani = new ArrayList();
// Fill the list
Object[][] arrayForTable = new Object[ani.size()][3];

for (int i = 0 ; i < ani.size() ; i++){
    for (int j = 0 ; j < 3 ; j++){
        switch(j){
        case 1 : arrayForTable[i][j] = ani.get(j).getColor();break;
        case 2 : arrayForTable[i][j] = ani.get(j).getAge();break;
        default : arrayForTable[i][j] = ani.get(j).getEatsGrass();break;
        }
    }
}
List ani=new ArrayList();
//填写清单
Object[][]arrayForTable=新对象[ani.size()][3];
对于(int i=0;i

它工作得很好,但有没有更简单的方法来实现这一点。我无法想象自己对一个包含25列的
JTable
使用相同的方法。

在你的
Animal
类中添加一个新方法肯定会帮助你:

public Object[] getAttributesArray() {
    return new Object[]{color, age, eatsGrass};
}
然后:

for (int i = 0; i < ani.size(); i++){
    arrayForTable[i] = ani.get(i).getAttributesArray();
}
for(int i=0;i
那就

   for (int i = 0 ; i < ani.size() ; i++){
            arrayForTable[i] = new Object[]{
             ani.get(i).getColor(), ani.get(i).getAge(),ani.get(i).getEatsGrass()};
}
for(int i=0;i
用于(int i=0;i
将此添加到您的
动物
课程中

public Object[] getDataArray() {
    return new Object[]{color, age, eatsGrass};
}
然后,使用
表格模型

String columns[] = {"Color", "Age", "Eats Grass?"}; 

DefaultTableModel tableModel = new DefaultTableModel(columns, 0);

for (Animal animal : ani) {
    tableModel.addRow(animal.getDataArray());
}

JTable animalTable = new JTable(tableModel);

更好的方法是使用适合于备份数据的
TableModel
type@SteveKuo是的,这是个好主意。谢谢!真是个好主意!向上投票,因为它回答了这个问题,但如果我有100个字段呢?@YassinHajaj如果你的类动物有100个字段,你在任何解决方案中都会遇到同样的问题。谢谢!使用tableModel当然是最好的方法。认可的!
public Object[] getDataArray() {
    return new Object[]{color, age, eatsGrass};
}
String columns[] = {"Color", "Age", "Eats Grass?"}; 

DefaultTableModel tableModel = new DefaultTableModel(columns, 0);

for (Animal animal : ani) {
    tableModel.addRow(animal.getDataArray());
}

JTable animalTable = new JTable(tableModel);