为什么要写这个呢,因为今天在做实验的时候遇到同样一个问题,大概的讲,如果只用list.remove(1),那么你将找不到下一个要移除的对象,因为list.size()改变了,就算能找到,最后一个一定报越界异常。
可能这样讲很模糊,但是有遇到相关问题的朋友一定能理解,这里我介绍一下remove和removeall:
- remove可以用来移除list集合里面第n个位置的数,比如list.remove(5)
- removeall可以用来移除list集合里面跟list2集合里面重复的数,比如有这么个list2里面add(“a”)再add(“b”),有个list1里面有abc,则执行list1.removeall(list2)后,list1里面只剩下c
- 以上两者最重要的区别是传入的参数,remove只能传入数字,即要删除的位置,这里要记住list跟数组一样是从0开始算起;removeall只能传入一个list集合,执行的是删除相同。
给个例子:
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list1 = new ArrayList<String>();
list1.add("go");
list1.add("go");
list1.add("to");
list1.add("go");
list1.add("to");
list1.add("go");
List<String> list2 = new ArrayList<String>();
list2.add("go");
list1.removeAll(list2);
System.out.println(list1.toString());
}
}
执行结果:
[to, to]