Hallo Leute,
ich bin mal wieder an meine Grenzen gestoßen. Dank diesem "ArrayList<ArrayList<ArrayList<String>>>" schönen Gebilde und zwar liegt mein problem im Zugriff auf die Daten. Mein Beispiel:
Ist wahrscheinlich sehr schwer durchzusteigen. Aber ich erklär mal kurz was ich vorhabe. Auf meine Anfrage er halte ich ein ResultSet mit 12 Spalten, die möchte ich zunächst in eine Liste speichern.
Sind die 12 Spalten abgearbeitet in der For-Schleife, wird die Liste einer weiteren Liste geadded.
Da ich die Elemente mit der gleichen GruppenID alle immer in einer Liste haben möchte passiert dies nur wenn die IDs gleich sind "if(tmp.equals(rs.getString(9)))". Falls eine neue auftaucht wird die Liste wieder einer weiteren Liste hinzugefügt. Man kann sich das so vorstellen, dass die erste Liste meine Prozessschrittbeschreibung beinhalten soll mit den verschiedenen Attributwerten (12). In der übergeordneten Liste liegen alle Prozessschritte und in der darüberliegenden alle Prozesse.
Naja ich hoffe mal das hilft, um sich das vielleicht bildlich ein wenig besser vorzustellen.
Ich habe wie bereits zu sehen, um es auszuprobieren Ausgaben eingefügt. Das sieht auch eigentlich ganz richtig aus.
Jetzt bekomme ich bei dem ausführen dieses Codes jedoch eine Exception:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at tagHandler.test.main(test.java:15)
Kann mir irgendjemand da helfen? Das wäre echt super....
ich bin mal wieder an meine Grenzen gestoßen. Dank diesem "ArrayList<ArrayList<ArrayList<String>>>" schönen Gebilde und zwar liegt mein problem im Zugriff auf die Daten. Mein Beispiel:
Java:
pstmt.setString(1, pgid);
rs = pstmt.executeQuery();
String tmp = "asd";
while(rs.next()){
ArrayList<ArrayList<String>> listlist = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
if(tmp.equals(rs.getString(9))){
for(int i = 1; i <= 12; i++){
String tmp2 = null;
tmp2 = rs.getString(i);
list.add(tmp2);
//System.out.println(tmp2);
}
listlist.add(list);
//System.out.println("add");
tmp = rs.getString(9);
}else{
listlistlist.add(listlist);
//System.out.println("superadd");
tmp = rs.getString(9);
}
}
Sind die 12 Spalten abgearbeitet in der For-Schleife, wird die Liste einer weiteren Liste geadded.
Da ich die Elemente mit der gleichen GruppenID alle immer in einer Liste haben möchte passiert dies nur wenn die IDs gleich sind "if(tmp.equals(rs.getString(9)))". Falls eine neue auftaucht wird die Liste wieder einer weiteren Liste hinzugefügt. Man kann sich das so vorstellen, dass die erste Liste meine Prozessschrittbeschreibung beinhalten soll mit den verschiedenen Attributwerten (12). In der übergeordneten Liste liegen alle Prozessschritte und in der darüberliegenden alle Prozesse.
Naja ich hoffe mal das hilft, um sich das vielleicht bildlich ein wenig besser vorzustellen.
Ich habe wie bereits zu sehen, um es auszuprobieren Ausgaben eingefügt. Das sieht auch eigentlich ganz richtig aus.
Jetzt bekomme ich bei dem ausführen dieses Codes jedoch eine Exception:
Java:
for(ArrayList<ArrayList<String>> listlist:
datenbankZugriff.dbzugriff.anfragetest()){
System.out.println(listlist.get(0).get(8));
}
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at tagHandler.test.main(test.java:15)
Kann mir irgendjemand da helfen? Das wäre echt super....