有许多已解决的多维数组帖子,但我在尝试通过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多维数组吗? 感谢
答案 0 :(得分: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() };
}
这会奏效,但非常难看。如果我是你,我会考虑让Swing更好地理解你的Person
课程,以避免要求Object[][]
。
答案 1 :(得分:2)
你需要有一个嵌套的for循环,它遍历Person的每个元素。当前代码将无法编译,因为您将数组的一个位置设置为无效值。或者,您可以在Person中创建一个返回数组的方法,并使用Person数组设置单维数组的值。
答案 2 :(得分:2)
data
是Object[][]
。因此,data[count - 1]
是Object[]
。然后data[count - 1][count - 1]
是Object
。查看Jon Skeet的答案,然后查看http://docs.oracle.com/javase/7/docs/api/javax/swing/table/TableModel.html记录的TableModel
界面。然后,查看从那里链接的Java Tutorial。
您不需要使用people
变量并将其转换为您现在正在执行的其他类型的对象。