2哥:3妹,今天是周末,又不用上班,干嘛看着不开心的样子啊?
3妹:你没有看昨天的新闻吗, 昨天国家痛失了两位重要人物。
2哥:哎,看到了,生老病死,也是没有办法。唯愿逝者安息,生者坚强!
我们能做的,就是更加坚强,好好学习,建设祖国!
3妹:好吧。
2哥:还记得我们之前学习的:list遍历时删除元素的方法吗, 那如果map又该如何删除元素呢?
3妹:emmm……, list是用iterator或者java 8的removeIf删除, 我想map也是如此吧。
2哥:差不多, 不过map的迭代删除,和我们常见的list还不太一样,不能直接获取Iteraotr对象,提供的删除方法 也是单个的,根据key进行删除,如果我们有个需求,将map中满足某些条件的元素删除掉,要怎么做呢?让我们来学习一下吧。
方法一:笨方法,遍历,找出key再删除
遍历map, 找出需要删除的key放在集合中, 然后再删除, 代码如下:
public static void main(String[] args) {
Map map = new HashMap();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
List toRemoveKeys = new ArrayList();
for (Map.Entry e : map.entrySet()) {
if (e.getValue() % 2 == 0) {
toRemoveKeys.add(e.getKey());
}
}
toRemoveKeys.forEach(map::remove);
}
方法二:entrySet
虽然Map没有迭代,但是它的entrySet有啊,所以我们可以通过它来实现遍历删除。这个可能是我们经常使用的方法:
public stat服务器托管网ic void main(String[] args) {
Map map = new HashMap();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
Iterator
方法三:jdk8 removeIf方法
到jdk8之后,针对容器提供了很多简洁的操作方式,迭代删除这方面可以说更加简单了,仅需一行代码:
public static void main(String[] args) {
Map map = new HashMap();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
map.entrySet().removeIf(entry -> entry.getValue() % 2 == 0);
}
总结 :
- 和list删除元素一样,不要在for或foreach迭代过程中删除数据,如有需要,可以使用迭代器entrySet.Iterator或者jdk8 的removeIf流式写法。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 一元函数微分学中导数–定义–意义–基本公式–运算法则导数的定义导数的几何意义和物理意义基本初等函数导数公式 导数求解的四则运算法则复合函数求导法则
目录 导数的定义 左导数和右导数 导数的几何意义和物理意义 几何意义 导数的几何意义–切线的斜率 物理意义 导数的物理意义——瞬时速度 基本初等函数导数公式 基本初等函数 常用基本初等函数导数公式 导数求解的四则运算法则 函数的求导法则 复合函数求导法则…