1.首先声明,如果想根据value删除map中的元素,使用map.remove(value)这个方法是错误的、 可以使用以下一段程序验证之:
Mapmap = new HashMap (); map.put("1", "11"); map.put("2", "22"); map.put("3", "33"); map.put("4", "44"); System.out.println(map.get("3")); // 显然map.remove方法的参数是key,不是value map.remove("33"); System.out.println(map.get("3"));
打印结果:
33
33
所以,执行的remove方法没起到删除元素的作用。 究其原因,可以看下remove方法的api对该方法参数的解释 :Parameters: key key whose mapping is to be removed from the map, 意思是大概要从map中删除元素的key,即参数不是value,而是key, 如果执行map.remove("3"), 程序打印结果就是:
33
null
2.所以直接使用上面方法不对,这是一个误区。 可以使用以下方法: Collection<String> col = map.values(); System.out.println(map.get("3")); col.remove("33"); System.out.println(map.get("3")); 打印结果:
33 null