1.从test中移除值为“i am 2”的元素
@Test
public void testHaha() {
List<String> test = new ArrayList<String>();
test.add("i am 1");
test.add("i am 2");
test.add("i am 2");
for (String string : test) {
if (string.equals("i am 2")) {
test.remove(string);
}
}
for (String string : test) {
System.out.println(string);
}
}
运行结果:
i am 1
i am 2
索引为3的元素遍历时漏掉了没有被遍历
解决方法一:从最后一个元素开始遍历
@Test
public void testHaha() {
List<String> test = new ArrayList<String>();
test.add("i am 1");
test.add("i am 2");
test.add("i am 2");
for (int i = test.size(); i > 0; i--) {
String string = "i am 2";
if (string.equals(test.get(i-1))) {
test.remove(i-1);
}
}
for (String string : test) {
System.out.println(string);
}
}
解决方法二:移除一个元素后把i减1,使所有的元素都被遍历到
@Test
public void testHaha() {
List<String> test = new ArrayList<String>();
test.add("i am 1");
test.add("i am 2");
test.add("i am 2");
for (int i = 0; i < test.size(); i++) {
String string = "i am 2";
if (string.equals(test.get(i))) {
test.remove(i--);
}
}
for (String string : test) {
System.out.println(string);
}
}