ArrayList中遇到的remove的问题
菜鸟入门,之前写连连看游戏,希望把已经选中的配对的Label从ArrayList中删除,结果在for循环中remove,集合内一直会剩余1个label对象
for(int i=0;i<clickJls.size();i++) {
JLabel jl=clickJls.get(i);
jl.setBackground(Color.GREEN);
jl.setText("O");
jl.setEnabled(false);
}
for(int i=0;i<clickJls.size();i++){
clickJls.remove(i);
}
//System.out.println("clickJls.size="+clickJls.size());
//因为我的clickJls的大小只有2,所以打印出来的集合大小一直是1
后面我去查看API文档
remove该列表指定位置元素后会将所有后续元素向左移动一位;
当我删除至ArrayList大小为1时,i=1所以退出循环,若集合大小更大则会抛出数组越界的异常;
所以最好的办法就是使用Iterator迭代器进行删除操作。
Iterator<JLabel> it=clickJls.iterator();
while(it.hasNext()) { //查询是否还有下一个元素
it.remove();
}
问题完美解决,大家不要犯我这样的错误,小错误啊!