将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