在Java中,有些场景会需要根据条件遍历集合元素,进行删除操作。
- 推荐下面这种,迭代器方式删除
阿里规约:【强制】不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。
@Test
void testList2(){
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if ("2".equals(item)) {
iterator.remove();
}
}
System.out.println(list);
}
- for循环遍历删除最后不要使用下面的方式1,否则很可能出问题。
@Test
void testList(){
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
for (String item : list) {
if ("2".equals(item)) {
list.remove(item);
}
}
System.out.println(list);
}
ps: 如果非要使用这种的话,可以使用倒序遍历删除