使用 for 循环创建多维数组
Posted
技术标签:
【中文标题】使用 for 循环创建多维数组【英文标题】:Creating a multi-dimensional array using a for loop 【发布时间】:2013-04-30 07:14:41 【问题描述】:有许多已解决的多维数组帖子,但我在尝试通过 for 循环创建一个时遇到了困难。
这是我正在尝试做的代码的代码 sn-p。
//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多维数组吗? 谢谢
【问题讨论】:
【参考方案1】: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
变量并将其转换为另一种类型的对象。
【讨论】:
【参考方案2】:您需要有一个遍历 Person 的每个元素的嵌套 for 循环。当前代码将无法编译,因为您将数组的一个位置设置为无效值。或者,您可以在 Person 中创建一个方法,该方法返回一个数组并使用 Person 数组设置一维数组的值。
【讨论】:
【参考方案3】:好吧,你可以这样做:
//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[][]
。
【讨论】:
感谢您的回复。那效果很好。我需要构造一个需要 Object[][] 的 DefaultTableModel。所以这就是为什么我需要这种类型的数组,而不是 Person[][]。再次感谢 写你自己的TableModel
而不是让模型对象适应Object[][]
并不难。
我应该建议AbstractTableModel
。以上是关于使用 for 循环创建多维数组的主要内容,如果未能解决你的问题,请参考以下文章
Java数组声明创建和使用以及多维数组Arrays类稀疏数组