2010-01-27 9 views
5

Java에서 ArrayList를 어떻게 2 차원 배열 Object [] []로 변환합니까?ArrayList를 2D 배열로 변환

의견 : XML 파일에는 연락처 목록 (예 : 이름, 주소 ...)이 포함되어 있습니다. 이 정보를 얻을 수있는 유일한 방법은 나에게 주어질 ArrayList를 이용하는 것입니다. 이 배열 목록의 내용을 순서대로 Java Swing 테이블에 저장해야하므로 개체의 2 차원 배열로 변환하려고합니다.

+0

목록에 무엇입니까? – pstanton

+0

배열 목록이 1D인데, 귀하의 질문이 무엇을 의미하는지 이해하지 못했습니다 –

+0

아마도 ArrayList에 배열 목록이 포함되어 있습니다 ... – ninesided

답변

1

나는 각 연락처 속성의 수를했다 알고, 그렇게하는 "방법"을 찾아 관리 (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()); 
     } 
    } 
0

난 당신이 자바 객체로 XML을 구문 분석하고 사용자 정의 데이터 객체에 객체를 저장하는 것이 좋습니다 것입니다. 이렇게하면 사용 가능한 데이터에서 더 많은 작업을 쉽게 수행 할 수 있습니다.

Here은 수행 방법에 대한 자습서입니다.

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

과 같이 사용 :

2

간단한 방법은이 같은 Contact에 메서드를 추가하는 것입니다

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

난 당신이 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); 
2

이 시도 고려 :

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; 
} 
관련 문제