Was ist der effizienteste Weg, um Daten von verschachtelten Listen in ein Objekt-Array (das als Daten für JTable verwendet werden kann) zu konvertieren?Java verschachtelte Liste zu Array-Konvertierung
Vielen Dank!
Was ist der effizienteste Weg, um Daten von verschachtelten Listen in ein Objekt-Array (das als Daten für JTable verwendet werden kann) zu konvertieren?Java verschachtelte Liste zu Array-Konvertierung
Vielen Dank!
//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);
}
Ich weiß nichts über JTable, aber die Konvertierung einer Liste von Listen in Array kann mit ein paar Zeilen erfolgen.
Für JTable
insbesondere, würde ich Subklassifizieren AbstractTableModel
wie so vorschlagen:
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);
}
}
Hinweis: Dies ist die einfachste Implementierung möglich ist; Fehlerüberprüfung wird der Kürze halber weggelassen.
Mit einem solchen Modell müssen Sie sich keine Gedanken über sinnlose Konvertierungen zu Object[][]
machen.
Gute Antwort. Überprüfen Sie jedoch, ob die an dieses Modell übergebenen Daten an anderer Stelle nicht sichtbar sind und anfällig für die Ninja-Bearbeitung sind. Es ist wahrscheinlich nicht, aber wenn es ist, muss es hier vielleicht geklont werden. –
Guter Punkt. Ich habe daran gedacht, aber DefaultTableModel prüft auch nicht (es verwendet Vektoren). Wie auch immer, dies ist die grundlegendste Implementierung, die möglich ist. ;) –