//List循环中删除制定元素
@Test
public void test17(){
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
//方式1:直接抛出异常
// list.forEach(str->{
// if (str.equals("ccc"))
// list.remove("ccc");
// });
//方式二:删除错误值
// for (int i = 0; i < list.size(); i++) {
// String temp = list.get(i);
// if (temp.equals("ccc"))
// list.remove("ccc");
// }
//方式三:正解
Iterator<String> it = list.iterator();
while (it.hasNext()){
String x = it.next();
if (x.equals("ccc"))
it.remove();
}
//方式四:正解简化版 JDK1.8支持
list.removeIf(s -> s.equals("ccc"));
list.forEach(System.out::println);
//原因说明。不用迭代器删除元素时,list.size会相应缩短且下标前移,导致相邻满足条件的元素未删除
}
来源:CSDN
作者:大火yzs
链接:https://blog.csdn.net/qq_34173920/article/details/103496882