map的迭代删除,和我们常见的list,set不太一样,不能直接获取Iteraotr对象,提供的删除方法也是单个的,根据key进行删除,如果我们有个需求,将map中满足某些条件的元素删除掉,要怎么做呢?
首先初始化一个HashMap
Map非常不优雅版本map = new HashMap<>(); map.put("a", 1); map.put("b", 2); map.put("c", 3); map.put("d", 4);
List正确姿势版removeKey = new ArrayList<>(); for (Map.Entry e: map.entrySet()) { if (e.getValue() % 2== 0) { removeKey.add(e.getKey()); } } removeKey.forEach(map::remove);
虽然Map没有迭代,但是它的entrySet有,所以我们可以通过它来实现遍历删除
Iteratorjdk8+ 流方式> iterator = map.entrySet().iterator(); Map.Entry entry; while (iterator.hasNext()) { entry = iterator.next(); if (entry.getValue() % 2 == 0) { iterator.remove(); } } System.out.println(map);
map.entrySet().removeIf(entry -> entry.getValue() % 2 == 0);



