本帖最后由 jasonbourne 于 2016-2-23 23:50 编辑
public class Test {
/**
* 需求:删除所有的 java 字符串有哪几种方法?
*/
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("aaa");
list.add("java");
list.add("java");
list.add("bbb");
// method1(list);
// method2(list);
method3(list);
System.out.println(list);
}
private static void method3(ArrayList<String> list) {
for (int i = list.size()-1; i >= 0; i--) {
if ("java".equals(list.get(i))) {
list.remove(i); //反向遍历的话,就不用改变 i 的值
}
}
}
private static void method2(ArrayList<String> list) {
for (int i = 0; i < list.size(); i++) {
if ("java".equals(list.get(i))) {
list.remove(i);
i--; //删除之后,size会减1,所以角标要往前移
}
}
}
private static void method1(ArrayList<String> list) {
Iterator<String> it = list.iterator(); //或者用ListIterator,但是不能用forEach,会引发 并发修改异常
while (it.hasNext()) {
if ("java".equals(it.next())) {
it.remove();
}
}
}
|
|