List方法remove()
当值和索引都是int类型的时候会不会出现特殊的结果?
代码
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (int i = 0; i <= list.size(); i++) {
if (i==1||i==3){
//第一种
list.remove(i);
//第二种
list.remove(new Integer(i));
}
}
list.forEach(System.out::println);
结果
当删除了一个size=3,i到达3的时候发生越界
结论
由方法图可以看到,你调用remove,默认是根据index删除,尽管值和index是一样的,
如果要删除值必须是对象而不是基本类型。