Ich versuche, eine ArrayList mit Zeichenfolgen (PlayersNames) und ImageIcons (PlayersIcons) basierend auf den Werten zu sortieren, die ich in einer anderen ArrayList mit Ganzzahlen (Ergebnisse) speichern. Wie Sie sehen können, bekomme ich eine indexOutOfBoundsException, aber ich verstehe nicht warum. Vielleicht bringt mich der Morgengruß dazu, keine einfachen Dinge zu sehen.Sortierung ArrayList - IndexOutOfBoundsException -Java
ArrayList<String> PlayersNames=new ArrayList<String>;
ArrayList<ImageIcon> PlayersIcons=new ArrayList<ImageIcons>;
public void sortPlayers(ArrayList<Integer> results){
String tmp;
ImageIcon tmp2;
for (int i=0; i<PlayersNames.size(); i++) {
for (int j=PlayersNames.size(); j>i; j--) {
if (results.get(i) < results.get(i+1)) { //IndexOutOfBoundsException!
tmp=PlayersNames.get(i+1);
PlayersNames.set(i+1,PlayersNames.get(i));
PlayersNames.set(i,tmp);
tmp2=PlayersIcons.get(i+1);
PlayersIcons.set(i+1,PlayersIcons.get(i));
PlayersIcons.set(i,tmp2);
}
}
}
}
Nun, offensichtlich gehen Sie über das Ende der Ergebnisliste hinaus, aber Sie haben den Code, der sortPlayers() aufruft, noch nicht gepostet, so dass wir nicht sagen können, wie groß diese Liste sein soll. Ist es genauso groß wie PlayersNames? Wenn dies der Fall ist, wird die letzte Iteration Ihrer Schleife, wenn i == PlayersNames.size() - 1, dazu führen, dass Sie aus dem Rahmen gehen, weil der Versuch, results.get (i + 1) aufzurufen, zu viel für die Ergebnisliste. –