Collection 如果使用 foreach 来删除会抛 ConcurrentModificationException 异常,检查并发修改。即在 foreach 迭代的过程中修改Collection 是不被允许的,因此采用以下方式删除。
1 List
@Test
public void testList() {
List<String> list = new ArrayList<>();
list.add("zzz1");
list.add("zzz2");
list.add("zzz3");
list.add("zzz4");
list.removeIf(key -> key.contains("z"));
System.out.println(list);
}
2 Map
@Test
public void testMap() {
Map<String, String> map = new HashMap<>();
map.put("11", "zzz1");
map.put("21", "zzz2");
map.put("31", "zzz3");
map.put("41", "zzz4");
map.keySet().removeIf(key -> key.contains("1"));
System.out.println(map);
}
或者使用 Iterator.
@Test
public void test() {
Map<String, String> map = new HashMap<>();
map.put("11", "zzz1");
map.put("21", "zzz2");
map.put("31", "zzz3");
map.put("41", "zzz4");
Iterator<String> iterator = map.keySet().iterator();
while(iterator.hasNext()) {
String key = iterator.next();
if (key.contains("1")) {
iterator.remove();
}
}
System.out.println(map);
}