私は文字列(PlayersNames)とimageIcons(PlayersIcons)でArrayListをソートしようとしていますが、整数(結果)を持つ他のarrayListに格納されている値に基づいています。 ご覧のとおり、私はindexOutOfBoundsExceptionを取得しますが、なぜそれは理解できません。たぶん、朝の鳴き声は私に平凡なものを見させないでしょう。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);
}
}
}
}
明らかに、結果リストの最後は外れていますが、sortPlayers()を呼び出すコードを投稿していないので、そのリストの大きさを知ることができません。 PlayersNamesと同じサイズですか?もしそうなら、あなたのループの最後の反復、i == PlayersNames.size() - 1のとき、results.get(i + 1)を呼び出そうとすると範囲外に出るでしょう。結果リスト。 –