×

map遍历删除

map遍历删除(JAVA中HashMap如何删除元素)

admin admin 发表于2023-08-13 06:58:33 浏览42 评论0

抢沙发发表评论

本文目录

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() 函数,至多只能对容器修改一次。上面的代码则进行了两次修改:一次添加,一次删除。

c++ 遍历map时删除当前元素正确方法

如果是清空map的话建议用mp.clear()。你的代码貌似是没有错的啊,用了dev-c++运行没有问题这里是我的代码,运行无问题,与你的代码应该是一样的for(map《int,int》::iterator it=mp.begin();it!=mp.end();) mp.erase(it++);是不是其它的语句影响的呢?或者改为这个试试 for(map《int,int》::iterator it=mp.begin(),next;it!=mp.end();) { next=it; next++; mp.erase(it); it=next; }

C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效

如果你在不知情的情况下使用了失效的迭代器,后果是不可预料的。可能程序立即崩掉,也可能什么事都没有发生。崩掉了算你 幸运,因为你至少知道出了问题,不然有你受的。回到正题,我想说什么呢?比如:程序代码map theMap;// add something to theMap...for(auto iter1 = theMap.begin(); iter1 != theMap.end(); ++iter1){if(iter1-》second == xxx){theMap.erase(iter1); //#1 erase the element ?!!}} 看样子貌似非常正常的一 段代码。在一个map中寻找值为xxx的项并删除。但是实际上这个代码是完全错误的,会导致无法预料的结果。问题就在#1处。因 此就可以这样做(《C++Standard Library》上建议的正确做法):程序代码for(auto iter1 = theMap.begin(); iter1 != theMap.end(); ){if(iter1-》second == xxx){theMap.erase(iter1++); //#1 }else{++iter1;}}

map遍历时怎么删除元素

HashMap的结构是《key, value》想要移除某个元素,只要移除某个key下面的value即可。如:package yiibai.com;import java.util.*;public class HashMapDemo {public static void main(String args) {// 构造hashmapHashMap 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的valuenewmap.remove(2);System.out.println(“Values after remove: “+ newmap);} }