4

有许多已解决的多维数组帖子,但我在尝试通过 for 循环创建一个时遇到了困难。

这是我正在尝试做的代码片段。

//Get a list of Person objects using a method
ArrayList<Person> people = getPeopleList();

//Create an array of 10 Objects with 4 values each
Object[][] data = new Object[10][4];

int count =1;
for(Person p: people)
{
    //This wont compile. This line is trying to add each Object data with values
    data[count-1][count-1] = {count, p.getName(), p.getAge(), p.getNationality()};
    count++;
}

//I then can add this data to my JTable..

谁能告诉我如何使用 for 循环创建这个多维数组。我不想要一个 Person 多维数组。它需要是一个Object多维数组吗?谢谢

4

3 回答 3

9

好吧,你可以这样做:

//Get a list of Person objects using a method
ArrayList<Person> people = getPeopleList();
Object[][] data = new Object[people.size()][];

for(int i = 0; i < people.size(); i++)
{
    Person p = people.get(i);
    data[i] = new Object[] { i, p.getName(), p.getAge(), p.getNationality() };
}

这会起作用,但它非常难看。如果我是你,我会考虑让 SwingPerson更好地“理解”你的类,以避免Object[][]完全需要。

于 2013-05-06T14:00:55.890 回答
2

您需要有一个嵌套的 for 循环来遍历 Person 的每个元素。当前代码将无法编译,因为您将数组的一个位置设置为无效值。或者,您可以在 Person 中创建一个方法,该方法返回一个数组并使用 Person 数组设置一维数组的值。

于 2013-05-06T14:04:21.610 回答
2

data是一个Object[][]。所以,data[count - 1] 是一个Object[]. 然后data[count - 1][count - 1]是一个Object. 查看 Jon Skeet 的回答,然后查看TableModel界面,记录在 http://docs.oracle.com/javase/7/docs/api/javax/swing/table/TableModel.html中。然后,查看从那里链接的 Java 教程。

您不需要像现在这样获取people变量并将其转换为另一种类型的对象。

于 2013-05-06T14:06:18.897 回答