2010-01-27 19 views
5

Java'da bir ArrayList'i iki boyutlu bir diziye nasıl dönüştürebilirsiniz? Nesne [] []?ArrayList'i 2B Array'a Dönüştürme

Yorumlardan: Sorununuzu daha fazla ayrıntıyla anlatacağım: XML dosyası bir kişi listesi (ör. Ad, adres ...) içerir. Bu bilgiyi alabilmemin tek yolu bana verilecek bir ArrayList'tir. Bu dizi listesinin içeriğini düzenli bir şekilde bir Java Swing tablosunda saklamak istediğim için, onu iki boyutlu bir nesneye dönüştürmeyi düşünüyordum

+0

listenizde ne var? – pstanton

+0

bir dizi listesi 1D, senin sorunun ne anlama geldiğini anlamıyorum –

+0

belki ArrayList bir Nesne dizileri listesi içerir ... – ninesided

cevap

1

Her rehber dizi özelliği vardır bilerek bunu yapmak için "bir yol" bulmayı başardılar (6). Yani bir 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()); 
     } 
    } 
0

Sana java nesneleri içine XML ayrıştırmak ve özel bir veri nesnesi nesne saklamak tavsiye edecekler. Bu, mevcut veriler üzerinde birçok işlem yapmanızı kolaylaştırır.

Here nasıl yapılacağı konusunda küçük bir eğiticidir.

public Object[] toObjectArray() { 
    return new Object[] { getName(), getAddress, /* ... */ }; 
} 

ve bu gibi kullanmak:

2

basit bir yolu böyle Contact için bir yöntem eklemektir

ArrayList<Contact> contacts = /* ... */ 
Object[][] table = new Object[contacts.size()][]; 
for (int i = 0; i < contacts.size(); i++) { 
    table[i] = contacts.get(i).toObjectArray(); 
} 
8

Sana JTable(Object[][], Object[]) yapıcı kullanıyorsunuz sanırım.

Bir ArrayList<Contact> dosyasını Object[][] dönüştürmek yerine, JTable(TableModel) yapıcısını kullanmayı deneyin. TableModel arabirimini uygulayan özel bir sınıf yazabilirsiniz. Sun, hayatınızı biraz daha kolaylaştıracak şekilde genişletmek için zaten AbstractTableModel sınıfını sağlamıştır.

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(); 
     // ... 
     } 
    } 

} 

Daha sonra

...

List<Contact> contacts = ...; 
TableModel tableModel = new ContactTableModel(contacts); 
JTable table = new JTable(tableModel); 
2

bu deneyin dikkate:

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)); 
     } 
    } 
0
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; 
}