将ArrayList转换为2D数组

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

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

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

不要将ArrayList转换为Object[][] ,而是尝试使用JTable(TableModel)构造函数。 您可以编写实现TableModel接口的自定义类。 Sun已经提供了AbstractTableModel类供您扩展,以使您的生活更轻松。

 public class ContactTableModel extends AbstractTableModel { private List contacts; public ContactTableModel(List 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 contacts = ...; TableModel tableModel = new ContactTableModel(contacts); JTable table = new JTable(tableModel); 

简单的方法是向Contact添加一个方法,如下所示:

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

并像这样使用它:

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

尝试这个:

 ArrayList list = new ArrayList(); 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  

我知道每个联系人拥有的属性数量,我设法找到“一种方法”(6)。 所以考虑一个ArrayList listofContacts

  int numberOfContacts = listofContacts.size()/6; Object[][] newArrayContent = new Object[numberOfContacts][6]; for(int x = 0; x 

你真正想要的是对ArrayList进行排序。 为此,您的Contacts类必须实现Comparator方法。

查看下一页的示例: http : //www.java-examples.com/sort-java-arraylist-descending-order-using-comparator-example

我建议您将XML解析为java对象并将对象存储在自定义数据对象中。 这将使您更容易对可用数据执行许多操作。

这是关于如何做到这一点的小教程。

 public static String[][] convertListIntoArrayObj(List possibilities) { int numberOfColums = 2; int numberOfRows = possibilities.size(); String[][] values = new String[numberOfRows][numberOfColums]; for(int x=0; x