Hallo,
ich habe eine Methode, welche Elemente einer Arraylist vergleicht.
Falls x-Elemente gleich sein sollten, sollen diese in ein separates Array geschrieben werden (mind. 2, nach oben offen).
Irgendwie scheint hier aber noch nicht alles rund zu laufen.
kann mir jemand sagen, wo der Fehler liegt?
ich bin grad sehr auf meine Lösung fixiert!
danke
ich habe eine Methode, welche Elemente einer Arraylist vergleicht.
Falls x-Elemente gleich sein sollten, sollen diese in ein separates Array geschrieben werden (mind. 2, nach oben offen).
Irgendwie scheint hier aber noch nicht alles rund zu laufen.
Java:
public void vergleiche() throws Exception{
//Erstelle ArrayListe mit Userdaten
List<UserDTO> StudArr = this.erstelle();
//Erzeuge 2D Arrayliste
ArrayList<ArrayList<UserDTO>> StudArrDo = new ArrayList<ArrayList<UserDTO>>();
int i = 0;
Iterator<UserDTO> studListeIt = StudArr.iterator();
while (studListeIt.hasNext()) {
UserDTO userTmp = studListeIt.next();
Iterator<UserDTO> studListeIt2 = StudArr.iterator();
while (studListeIt2.hasNext()) {
UserDTO userTmp2 = studListeIt2.next();
//wenn es sich um versch. Arrayelemente handelt..
if(userTmp.hashCode() != userTmp2.hashCode()){
//Wenn die equals-Checks = true sind
if(userTmp.equalsMail(userTmp2)
| userTmp.equalsName(userTmp2)
| userTmp.equalsMatnr(userTmp2)
| userTmp.equalsLogin(userTmp2)){
System.out.println("user: " + userTmp.getUsrID() + " und user: " + userTmp2.getUsrID() + " sind gleich!");
//erzeuge Unterarray mit dem Wert i und fuege die User hinzu
StudArrDo.add(new ArrayList<UserDTO>());
StudArrDo.get(i).add(userTmp2);
StudArrDo.get(i).add(userTmp);
// i++; //Wenn ich hier hochzähle, wird ja bei jedem durchlauf ein array erzeugt, heißt, dass max. 2 gleiche Objekte in ein array kommen
}
}
}
i++; // wenn ich hier hochzähle. java.lang.IndexOutOfBoundsException: Index: 5, Size: 2
}
//System.out.println(StudArrDo.size());
//System.out.println(StudArrDo.get(0).size());
}
kann mir jemand sagen, wo der Fehler liegt?
ich bin grad sehr auf meine Lösung fixiert!
danke