Converting an ArrayList into a 2D Array

前端 未结 8 2182
北海茫月
北海茫月 2020-12-04 01:55

In Java how do you convert a ArrayList into a two dimensional array Object[][]?

From comments: I will describe you the problem with more details: an XML file inclu

相关标签:
8条回答
  • 2020-12-04 02:28

    I will recommend that you parse your XML into java objects and store the object in a custom data object. This will make it easier for you to do many operations on the available data.

    Here is small tutorial on how to do it.

    0 讨论(0)
  • 2020-12-04 02:32

    The simple way is to add a method to the Contact like this:

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

    and use it like this:

    ArrayList<Contact> contacts = /* ... */
    Object[][] table = new Object[contacts.size()][];
    for (int i = 0; i < contacts.size(); i++) {
        table[i] = contacts.get(i).toObjectArray();
    }
    
    0 讨论(0)
  • 2020-12-04 02:32
     ArrayList<String> arrayList = new ArrayList<String>();
        arrayList.add("element_1");
        arrayList.add("element_2");
        arrayList.add("element_3");
        arrayList.add("element_4");
        int k=0;
        int row = 2, col = 2;
        Object[][] objArray = new Object[row][col];
         for(int i = 0 ; i < row; i++) {
             for(int j = 0; j < col; j++) {
                     objArray[i][j] = arrayList.get(k);
                     k++;
                     if(k > arrayList.size()) {
                         break;
                     }
             }
         }
         for(int i = 0 ; i < row; i++) {
             for(int j = 0; j < col; j++) {
    
                 System.out.println("Row no "+i+" col no "+j+" "+objArray[i][j] );
             }
      }
     }
    
    0 讨论(0)
  • 2020-12-04 02:36

    I presume you are using the JTable(Object[][], Object[]) constructor.

    Instead of converting an ArrayList<Contact> into an Object[][], try using the JTable(TableModel) constructor. You can write a custom class that implements the TableModel interface. Sun has already provided the AbstractTableModel class for you to extend to make your life a little easier.

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

    Later on...

    List<Contact> contacts = ...;
    TableModel tableModel = new ContactTableModel(contacts);
    JTable table = new JTable(tableModel);
    
    0 讨论(0)
  • 2020-12-04 02:42

    What you really want is to sort the ArrayList. To do that your Contacts class must implement a Comparator method.

    Check the next page for an example: http://www.java-examples.com/sort-java-arraylist-descending-order-using-comparator-example

    0 讨论(0)
  • 2020-12-04 02:44

    I managed to find "a way" to do so, knowing the number of attributes each contacts has (6). So considering an 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 讨论(0)
提交回复
热议问题