2013-05-06 81 views
4

有很多解決了多維數組的帖子,但我在嘗試通過for循環創建一個時遇到了困難。使用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多維數組。它需要是一個對象多維數組? 感謝

回答

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[][]

+0

感謝您的回覆。這很好。我需要構造一個需要Object [] []的DefaultTableModel。所以這就是爲什麼我需要這種類型的數組,而不是Person [] []。再次感謝 – 2013-05-06 14:15:24

+0

編寫自己的'TableModel'並不難,而不是將模型對象調整爲Object [] []'。 – 2013-05-06 14:29:07

+0

我應該建議'AbstractTableModel'。 – 2013-05-06 16:49:06

2

您需要有一個嵌套的for循環來檢查Person的每個元素。當前的代碼不會編譯,因爲您將數組的一個位置設置爲無效值。或者,您可以在Person中創建一個返回數組並使用Person數組設置單維數組值的方法。

2

dataObject[][]。所以,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變量,並將其轉換爲另一種類型的對象,就像您現在所做的那樣。