有效地将List <object>转换为Object [] [] </object>

时间:2014-08-13 20:04:35

标签: java swing

我目前有一个学生对象列表,我需要将其转换为Object [] [],以便我可以将数据附加到GUI中的JTable中,我有点迷失了如何在一种有效/动态的方式。

我没有写下任何内容发布到此处,我可以向您提供数据的详细信息:

List<Student> myStudents = new ArrayList<>();

需要以某种方式变形为:

Object[][] data = {{...}};

每个学生都有11个要添加的字段,所以它会转到Object [i] [0 ... 10]

所有这一切的替代方法是以某种方式找到一种方法在List<Student>内传递new JTable(data, columnNames)而不是Object[][]

要么解决这个问题,要么解决这个问题

3 个答案:

答案 0 :(得分:3)

可能类似的东西,你不会变得更简单,除非有关于学生的了解

List<Object[]> props = new ArrayList<>();

for (Student student : myStudents) {
    Object[] std = new Object[11];
    std[0] = student.whatever;
    // Complete the object
    props.add(std);
}

return props.toArray();

答案 1 :(得分:1)

我不是JTable的专家,所以这可能不是最好的解决方案。

Object[][] data = new Object[myStudents.size()][11];
for(int i = 0; i < myStudents.size(); i++) {
    data[i][0] = myStudents.get(i).firstProperty;
    data[i][1] = myStudents.get(i).secondProperty;
    // continue
}

答案 2 :(得分:1)

  

所有这一切的替代方法是以某种方式找到一种在新的JTable(data,columnNames)中传递List的方法

这是更好的方法。您永远不应该尝试保留两份数据。所有数据只应存储在TableModel中。这意味着您需要创建一个自定义TableModel来保存Student对象。

查看Row Table Model以获取可支持任何自定义Object的TableModel的基本实现。您需要实现几种方法来支持您的学生对象。 JButtonTableModel示例向您展示了如何做到这一点。