使用Objects字段从ArrayList <object>创建Object [] []的简便方法

时间:2015-10-13 19:43:35

标签: java arrays optimization arraylist jtable

所以我在ArrayList填充了对象,我需要将其转换为Object[][],以便将其轻松放入JTable

示例:

我有ArrayList<Animal>

class Animal{
    String color;
    int age;
    String eatsGrass;
    // Rest of the Class (not important)
}

我想要的是一个具有以下列名的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;
        }
    }
}

它工作正常,但是有一种更简单的方法可以实现这一点。我无法想象自己对{25}列的JTable使用相同的方法。

4 个答案:

答案 0 :(得分:1)

Animal课程中添加新方法肯定会对您有所帮助:

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

然后:

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

答案 1 :(得分:1)

将此添加到您的Animal课程。

public Object[] getDataArray() {
    return new Object[]{color, age, eatsGrass};
}

然后,使用TableModel

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

答案 2 :(得分:0)

只是

   for (int i = 0 ; i < ani.size() ; i++){
            arrayForTable[i] = new Object[]{
             ani.get(i).getColor(), ani.get(i).getAge(),ani.get(i).getEatsGrass()};
}

答案 3 :(得分:0)

for(int i = 0; i < ani.size(); i++) {
Animal animal = ani.get(i);
arrayForTable[i] = new Object[] {animal.getColor(), animal.getAge(), animal. getEatsGrass()};
}