tabla - Lista anidada de Java para la conversión de matriz
llenar jtable con matriz java (2)
Para JTable
en particular, sugeriría que subclases AbstractTableModel
así:
class MyTableModel extends AbstractTableModel {
private List<List<String>> data;
public MyTableModel(List<List<String>> data) {
this.data = data;
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return data.get(0).size();
}
@Override
public Object getValueAt(int row, int column) {
return data.get(row).get(column);
}
// optional
@Override
public void setValueAt(Object aValue, int row, int column) {
data.get(row).set(column, aValue);
}
}
Nota: esta es la implementación más básica posible; la verificación de errores se omite por brevedad.
Usando un modelo como este, no tiene que preocuparse por las conversiones sin sentido a Object[][]
.
¿Cuál es la forma más eficiente de convertir datos de listas anidadas a una matriz de objetos (que se puede usar, por ejemplo, como datos para JTable)?
List<List> table = new ArrayList<List>();
for (DATAROW rowData : entries) {
List<String> row = new ArrayList<String>();
for (String col : rowData.getDataColumn())
row.add(col);
table.add(row);
}
// I''m doing the conversion manually now, but
// I hope that there are better ways to achieve the same
Object[][] finalData = new String[table.size()][max];
for (int i = 0; i < table.size(); i++) {
List<String> row = table.get(i);
for (int j = 0; j < row.size(); j++)
finalData[i][j] = row.get(j);
}
¡Muchas gracias!
//defined somewhere
List<List<String>> lists = ....
String[][] array = new String[lists.size()][];
String[] blankArray = new String[0];
for(int i=0; i < lists.size(); i++) {
array[i] = lists.get(i).toArray(blankArray);
}
No sé nada sobre JTable, pero la conversión de una lista de listas a una matriz se puede hacer con unas pocas líneas.