在Java中,如何將ArrayList轉換爲二維數組Object [] []?將ArrayList轉換爲2D數組
來自評論:我會用更多的細節來描述你的問題:一個XML文件包含一個聯繫人列表(例如姓名,地址......)。我能獲得這些信息的唯一方法就是通過一個ArrayList,它會被髮給我。因爲我需要以有序的方式將此數組列表的內容存儲在Java Swing表中,所以我想將它轉換爲對象的二維數組。
在Java中,如何將ArrayList轉換爲二維數組Object [] []?將ArrayList轉換爲2D數組
來自評論:我會用更多的細節來描述你的問題:一個XML文件包含一個聯繫人列表(例如姓名,地址......)。我能獲得這些信息的唯一方法就是通過一個ArrayList,它會被髮給我。因爲我需要以有序的方式將此數組列表的內容存儲在Java Swing表中,所以我想將它轉換爲對象的二維數組。
我設法找到「辦法」這樣做的,知道屬性的數量各的聯繫人(6)。所以考慮一個ArrayList listofContacts
int numberOfContacts = listofContacts.size()/6;
Object[][] newArrayContent = new Object[numberOfContacts][6];
for(int x = 0; x<numberOfContacts; x++){
for(int z = 0; z < 6; z++){
int y = 6 * x;
newArrayContent [x][z] = list.get(y+z);
System.out.println(newArrayContent [x][z].toString());
}
}
您真正想要的是對ArrayList進行排序。爲此,您的聯繫人類必須實現比較器方法。
檢查爲例下一頁:http://www.java-examples.com/sort-java-arraylist-descending-order-using-comparator-example
我會建議你分析你的XML轉換爲Java對象和對象存儲在一個自定義的數據對象。這將使您可以更輕鬆地對可用數據執行許多操作。
Here是如何做到這一點的小教程。
最簡單的方法是將一個方法添加到Contact
這樣的:
public Object[] toObjectArray() {
return new Object[] { getName(), getAddress, /* ... */ };
}
,並使用它像這樣:
ArrayList<Contact> contacts = /* ... */
Object[][] table = new Object[contacts.size()][];
for (int i = 0; i < contacts.size(); i++) {
table[i] = contacts.get(i).toObjectArray();
}
我相信你正在使用的JTable(Object[][], Object[])
構造。
而不是將ArrayList<Contact>
轉換爲Object[][]
,請嘗試使用JTable(TableModel)
構造函數。您可以編寫一個實現TableModel
界面的自定義類。 Sun已經爲您提供了AbstractTableModel
課程,以延長您的生活。
public class ContactTableModel extends AbstractTableModel {
private List<Contact> contacts;
public ContactTableModel(List<Contact> contacts) {
this.contacts = contacts;
}
public int getColumnCount() {
// return however many columns you want
}
public int getRowCount() {
return contacts.size();
}
public String getColumnName(int columnIndex) {
switch (columnIndex) {
case 0: return "Name";
case 1: return "Age";
case 2: return "Telephone";
// ...
}
}
public Object getValueAt(int rowIndex, int columnIndex) {
Contact contact = contacts.get(rowIndex);
switch (columnIndex) {
case 0: return contact.getName();
case 1: return contact.getAge();
case 2: return contact.getTelephone();
// ...
}
}
}
後來......
List<Contact> contacts = ...;
TableModel tableModel = new ContactTableModel(contacts);
JTable table = new JTable(tableModel);
試試這個:
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(..);
list.add(..);
list.add(..);
list.add(..);
list.add(..);
list.add(..);
int[][] a = new int[list.size()][list.size()];
for(int i =0; i < list.size(); i++){
for(int j =0; j <list.size(); j++){
a[i][j]= list.get(j +(list.size() * i));
}
}
public static String[][] convertListIntoArrayObj(List<TeamMenuSelected> possibilities) {
int numberOfColums = 2;
int numberOfRows = possibilities.size();
String[][] values = new String[numberOfRows][numberOfColums];
for(int x=0; x<possibilities.size(); x++) {
TeamMenuSelected item = possibilities.get(x);
values[x][0] = item.getTeamName();
values[x][1] = item.getTeamCuisine();
}
return values;
}
什麼在你的名單? – pstanton 2010-01-27 11:39:34
數組列表是1D,我不明白你的問題意味着什麼 – 2010-01-27 11:44:33
也許ArrayList包含一個Object數組列表... – ninesided 2010-01-27 11:47:06