hiho,
ich hab grad ein kniffliges Problemchen. Und zwar habe ich eine Matrix, welche als Zelleninhalt Listen von Strings hält. Die Matrix selbst basiert ebenfalls auf Listenstrukturen, sieht also wie folgt aus:
liest sich blöde, aber is zumindest ein Versuch
So um nun bei ner größeren Matrix nicht alle Zellen mit irgendwelchen, größtenteils leeren, Listen zu erzeugen, dachte ich, ich erzeuge nur in den Zellen ein Listenobjekt, wo ich auch definitiv ne Information ablegen muss, also die Liste später mind. 1 Element beinhaltet.
So, das ganze muss nur eine obere Dreiecksmatrix sein, das bedeutet die Länge der Spalten entspricht exakt dem Spaltenindex+1 (Spalte 0 = 1 Reihe, Spalte 5 = 6 Reihen) .. daher auch "col+1" im Code. So leider hilft mir diese initiale Kapazität kein Stück, ausser das ArrayList-intern nichts erweitert werden muss. Die Size bleibt aber weiterhin 0 ... und genau das schlägt dann bei der Prüfung in Zeile 9 quer. Denn ich erhalte hier nicht ne Angabe ob das Element null ist oder existiert, sondern ich bekomme eine IndexOutOfBounds-Exception, was mir total nich weiterhilft
Gibt es noch andere Datenstrukturen, mit sehr guter Zugriffszeit, welche in etwa mit obigem Code arbeiten lassen?! Also wenn eine Zelle null ist, dann leg ich eben ne neue Liste rein, sonst hänge ich etwas an die bestehende an.
ich hab grad ein kniffliges Problemchen. Und zwar habe ich eine Matrix, welche als Zelleninhalt Listen von Strings hält. Die Matrix selbst basiert ebenfalls auf Listenstrukturen, sieht also wie folgt aus:
Java:
private List<List<List<String>>> matrix;
liest sich blöde, aber is zumindest ein Versuch
So um nun bei ner größeren Matrix nicht alle Zellen mit irgendwelchen, größtenteils leeren, Listen zu erzeugen, dachte ich, ich erzeuge nur in den Zellen ein Listenobjekt, wo ich auch definitiv ne Information ablegen muss, also die Liste später mind. 1 Element beinhaltet.
So, das ganze muss nur eine obere Dreiecksmatrix sein, das bedeutet die Länge der Spalten entspricht exakt dem Spaltenindex+1 (Spalte 0 = 1 Reihe, Spalte 5 = 6 Reihen) .. daher auch "col+1" im Code. So leider hilft mir diese initiale Kapazität kein Stück, ausser das ArrayList-intern nichts erweitert werden muss. Die Size bleibt aber weiterhin 0 ... und genau das schlägt dann bei der Prüfung in Zeile 9 quer. Denn ich erhalte hier nicht ne Angabe ob das Element null ist oder existiert, sondern ich bekomme eine IndexOutOfBounds-Exception, was mir total nich weiterhilft
Java:
private void addToMatrix(String elem, int col, int row) {
System.out.println(elem + "\t@ [" + col + "," + row + "] (col,row)");
//setup column-size if neccessary (cells will be null)
if (matrix.size() <= col)
for (int i=matrix.size(); i<=col; i++)
matrix.add(new ArrayList<List<String>>(col+1));
//setup specified cell
if (matrix.get(col).get(row) == null) { //hier kommt die Exception
matrix.get(col).set(row, new ArrayList<String>(1));
matrix.get(col).get(row).add(elem);
}//addToMatrix
Gibt es noch andere Datenstrukturen, mit sehr guter Zugriffszeit, welche in etwa mit obigem Code arbeiten lassen?! Also wenn eine Zelle null ist, dann leg ich eben ne neue Liste rein, sonst hänge ich etwas an die bestehende an.