将ArrayList转换为2D数组

Ant*_*nto 6 java arrays arraylist

在Java中如何将ArrayList转换为二维数组Object [] []?

来自评论:我将通过更多细节向您描述问题:XML文件包含联系人列表(例如姓名,地址......).我可以获取此信息的唯一方法是通过ArrayList,它将提供给我.因为我需要以有序的方式将这个数组列表的内容存储在Java Swing表中,所以我想将它转换为二维对象数组

Ada*_*ter 8

我假设您正在使用JTable(Object[][], Object[])构造函数.

尝试使用构造函数,而不是将其转换ArrayList<Contact>为an .您可以编写实现该接口的自定义类.Sun已经为您提供了课程,让​​您的生活更轻松.Object[][]JTable(TableModel)TableModelAbstractTableModel

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

}
Run Code Online (Sandbox Code Playgroud)

稍后的...

List<Contact> contacts = ...;
TableModel tableModel = new ContactTableModel(contacts);
JTable table = new JTable(tableModel);
Run Code Online (Sandbox Code Playgroud)


Ant*_*nto 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());
        }
    }
Run Code Online (Sandbox Code Playgroud)