JAVA中HashMap如何删除元素
HashMap删除元素根据其遍历方式一般有两种方法,实例演示如下:
一、采用foreach模式,适用于不需要修改HashMap内元素的遍历,只需要获取元素的键/值的情况。
1、遍历如下:
2、此时删除HashMap中的元素,Java很有可能会在运行时抛出异常。
运行上面的代码,Java抛出了 java.util.ConcurrentModificationException 的异常。并附有如下信息。
可以推测,由于在遍历HashMap的元素过程中删除了当前所在元素,下一个待访问的元素的指针也由此丢失了。
二、采用迭代器遍历,不仅适用于HashMap,对其它类型的容器同样适用。
1、采用这种方法的遍历,可以用下文提及的方式安全地对HashMap内的元素进行修改,并不会对后续的删除操作造成影响。
2、运行结果没有显示,表明HashMap中的元素被正确删除了,代码如下:
扩展资料:
HashMap的遍历中删除元素的特殊情况:
如果HashMap中的键值同样是一个HashMap,假设你需要处理的是 HashMap<HashMap<String, Integer>, Double> myHashMap 时,可能需要修改myHashMap中的一个项的键值HashMap中的某些元素,之后再将其删除。
这时,单单依靠迭代器的 remove() 方法是不足以将该元素删除的。
具体代码如下:
原因在于,迭代器遍历时,每一次调用 next() 函数,至多只能对容器修改一次。上面的代码则进行了两次修改:一次添加,一次删除。
想要移除某个元素,只要移除某个key下面的value即可。
如:
package yiibai.com;
import java.util.*;
public class HashMapDemo {
public static void main(String args[]) {
// 构造hashmap
HashMap newmap = new HashMap();
// 给hashmap赋值
newmap.put(1, "tutorials");
newmap.put(2, "point");
newmap.put(3, "is best");
System.out.println("Values before remove: "+ newmap);
// 移除key为2的value
newmap.remove(2);
System.out.println("Values after remove: "+ newmap);
}
}