java map遍历如何防止删除元素(java中遍历List中的map问题:)
本文目录
java中遍历List中的map问题:
简单循环取出hashmap后直接get就行了。Map map = null;String netMode=null;for(int i=0;i《list.size();i++){ map=(HashMap)list.get(i); netMode=(String)map.get("netMode"); System.out.println(netMode);}不明白为什么不用bean呢?hashmap内存消耗比一个bean大啊。如果单纯的存放固定的数据还是bean比较合适吧。
java map 用for循环的问题
亲,你要搞清楚。集合类的foreach只能用来遍历,不能进行修改操作的。即不能修改、删除、添加元素。只能遍历。如果进行了修改操作的话。会抛出java.util.ConcurrentModificationException异常,表示你不同在遍历的同时,又进行修改。如果你非得,要做修改操作。请选择正常的for循环。以List为例。 List《String》 list = new ArrayList();for(int i=0;i《10;i++){ list.add(i+""); }System.out.println(list.size());//10for(int i=0;i《list.size();i++){ if(list.get(i).equals("1")){list.remove(list.get(i)); }}System.out.println(list.size());//9
java ee问题,我用map.remove()方法不能删除元素
大致看了下目前的情况,我估计你大概没理解MAP的数据结构,map是一种以key value形式保存数据的结构,你用的remove方法接收的参数是指map的key值,我怀疑你的这个bid并不是map的key值,而是value值,理由就是map.containsKey(bid);这句话的结果是false,所以你不能直接调用remove方法删除,只能遍历map比较value值:Iterator it = map.keySet().iterator();if(it.hasNext()){Object o = it.next();if(bid.equals(o)){it.remove();}}这样应该可以了,不过这不是最好的办法,你应该去看看数据进入map的时候是如何保存的,调用这个delete方法的时候应该传过来的是这个map当时存放的key,这样才比较高效
工作中你是如何用Java 遍历 Map的呢
在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。
既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)
方法一、 在for-each循环中使用entries来遍历
这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。
注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。
方法二、在for-each循环中遍历keys或values如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。
该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。
方法三、使用Iterator遍历
使用泛型:
不使用泛型:
你也可以在keySet和values上应用同样的方法。
该种方式看起来冗余却有其优点所在。首先,在老版本java中这是惟一遍历map的方式。另一个好处是,你可以在遍历时调用iterator.remove()来删除entries,另两个方法则不能。根据javadoc的说明,如果在for-each遍历中尝试使用此方法,结果是不可预测的。
从性能方面看,该方法类同于for-each遍历(即方法二)的性能。
方法四、通过键找值遍历(效率低)
作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果你安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。
总结
如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。
更多文章:
network error什么意思(网页提示“network error”,有什么方法解决)
2024年1月8日 15:40
location是什么意思中文(location是什么意思)
2024年7月24日 04:13
数据恢复大师破解版(谁有DataExplore数据恢复大师注册码或者破解版啊)
2024年7月19日 10:00
dateformat用法(JAVA中SimpleDateFormat所定义的对象的方法都有哪些)
2024年7月2日 14:40
最新win10永久激活方法(Win10正版系统怎么永久激活)
2023年9月25日 12:00
evaluation读音(高考大纲解读及高考复习策略的收获)
2024年6月28日 12:09
android开发简单购物app(开发一个购物类app需要多少钱)
2024年3月17日 10:15
centos7检查存储配置出错(安装centos7出现这个提示,怎么办)
2024年7月21日 10:04
襄阳少儿编程培训机构(卡巴kabba青少儿科技活动中心怎么样)
2024年7月24日 04:49
黑马程序员是哪个公司的(谁能给我详细讲下,北大青鸟,达内,黑马程序员三个IT培训学校的详细信息!包括课程每年的学费)
2024年7月18日 04:32
100个必会的shell命令(linux shell sed命令用法)
2024年7月24日 05:35
当前许可不支持影像服务器(安装solidworks2005时得到不了许可证 许可服务器不支持(-18,147,0)怎么办)
2024年8月12日 06:46
api免费接口(有哪些可免费调用的ocr识别技术API接口)
2024年7月24日 01:13
public函数的用法(vb6.0里“Public”语句如何使用)
2024年6月22日 14:10