本意是在循环hashmap的时候,根据条件,把符合条件的kv键值对给删除掉。下面是错误代码。
private void error(Map<String, String> map1, Map<String, String> map2) {
Iterator<String> iterator = map1.keySet().iterator();
while (iterator.hasNext()) {
for (String s : map2.keySet()) {
if (iterator.next().equals(s)){
iterator.remove();
}
}
}
}
哎,就上面这个代码,竟然能陷入死循环。我也佩服,竟然能出现死循环,不得不佩服,道路千万条,代码不规范,错误就奇葩的一匹。下面是测试代码。
@Test
public void test() {
Map<String, String> map1 = Maps.newHashMap();
map1.put("a", "a");
Map<String, String> map2 = Maps.newHashMap();
error(map1, map2);
}