在 Iterator 迭代过程去变动来源并不建议。
先找出 key 清单,再从清单移除,这样不用担心 Map 资料中途被变动,value 有重复
也可以处理。
package cc.openhome;
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
String target = "foo";
Map<String, String> map = new HashMap<>() {
{
put("a", "foo");
put("b", "orz");
put("c", "foo");
}
};
map.entrySet()
.stream()
.filter(entry -> entry.getValue().equals(target))
.map(entry -> entry.getKey())
.collect(Collectors.toList())
.forEach(map::remove);
System.out.println(map); // {b=orz}
}
}
--
良葛格学习笔记
http://openhome.cc
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.10.171.218
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1544602209.A.363.html
※ 编辑: JustinHere (39.10.171.218), 12/12/2018 16:13:29
※ 编辑: JustinHere (39.10.171.218), 12/12/2018 16:16:07