我想基于我存储在其他arrayList与整数(结果)值的字符串(PlayersNames)和imageIcons(PlayersIcons)排序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的大小相同吗?如果是这样,那么循环的最后一次迭代,当我== PlayersNames.size() - 1,会导致你超出界限,因为试图调用results.get(i + 1)将是一个太多结果列表。 – 2011-01-13 05:08:57