Преобразование ArrayList в 2D массив

В Java, как Вы преобразовываете ArrayList в Объект двумерной матрицы [] []?

Из комментариев: Я опишу Вас проблема с большим количеством деталей: XML-файл включает список контактов (например, имя, адрес...). Единственным путем я могу получить эту информацию, через ArrayList, который будет дан мне. Поскольку я должен сохранить содержание этого списка массива в таблице Java Swing заказанным способом, я думал для преобразования его в двумерную матрицу объектов

6
задан cjk 27 January 2010 в 13:45
поделиться

5 ответов

Мне удалось найти «способ», чтобы сделать это, зная количество Атрибуты, что каждый контакт имеет (6). Таким образом, учитывая Arraylist Laraylist 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());
        }
    }
1
ответ дан 8 December 2019 в 18:36
поделиться

Простой способ - добавить способ контакт Как это:

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();
}
2
ответ дан 8 December 2019 в 18:36
поделиться

Я рекомендую вам разбирать XML в объекты Java и хранить объект в пользовательском объекте данных. Это облегчит для вас много операций на доступных данных.

Здесь - небольшой учебник о том, как это сделать.

0
ответ дан 8 December 2019 в 18:36
поделиться

Я предполагаю, что вы используете JTable (объект [] [], объект []) конструктор.

Вместо того, чтобы преобразовать ArrayList в объект [] [] [] , попробуйте использовать конструктор JTable (Tablemodel) . Вы можете написать пользовательский класс, который реализует интерфейс Tablemodel . Sun уже предоставил классу ABSOLTALLEMODEL для вас, чтобы продлить, чтобы сделать вашу жизнь немного проще.

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);
8
ответ дан 8 December 2019 в 18:36
поделиться

То, что вы действительно хотите, это отсортировать ArrayList. Для этого ваш класс контактов должен реализовать метод компаратора.

Проверьте следующую страницу для примера: http://www.java-example.com/sort-java-arraylist-desceddended-order-us-us-comparator-example

0
ответ дан 8 December 2019 в 18:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: