`
宋双旺
  • 浏览: 153772 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 遍历Map时 删除元素

阅读更多
Java代码 复制代码 收藏代码
  1. package net.nie.test;   
  2.   
  3. import java.util.HashMap;   
  4. import java.util.Iterator;   
  5. import java.util.Map;   
  6.   
  7. public class HashMapTest {   
  8.    private static Map<Integer, String> map=new HashMap<Integer,String>();   
  9.        
  10.    /**  1.HashMap 类映射不保证顺序;某些映射可明确保证其顺序: TreeMap 类  
  11.     *   2.在遍历Map过程中,不能用map.put(key,newVal),map.remove(key)来修改和删除元素,  
  12.     *   会引发 并发修改异常,可以通过迭代器的remove():  
  13.     *   从迭代器指向的 collection 中移除当前迭代元素  
  14.     *   来达到删除访问中的元素的目的。    
  15.     *   */    
  16.    public static void main(String[] args) {   
  17.         map.put(1,"one");   
  18.         map.put(2,"two");   
  19.         map.put(3,"three");   
  20.         map.put(4,"four");   
  21.         map.put(5,"five");   
  22.         map.put(6,"six");   
  23.         map.put(7,"seven");   
  24.         map.put(8,"eight");   
  25.         map.put(5,"five");   
  26.         map.put(9,"nine");   
  27.         map.put(10,"ten");   
  28.         Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();   
  29.         while(it.hasNext()){   
  30.             Map.Entry<Integer, String> entry=it.next();   
  31.             int key=entry.getKey();   
  32.             if(key%2==1){   
  33.                 System.out.println("delete this: "+key+" = "+key);   
  34.                 //map.put(key, "奇数");   //ConcurrentModificationException   
  35.                 //map.remove(key);      //ConcurrentModificationException   
  36.                 it.remove();        //OK    
  37.             }   
  38.         }   
  39.         //遍历当前的map;这种新的for循环无法修改map内容,因为不通过迭代器。   
  40.         System.out.println("-------\n\t最终的map的元素遍历:");   
  41.         for(Map.Entry<Integer, String> entry:map.entrySet()){   
  42.             int k=entry.getKey();   
  43.             String v=entry.getValue();   
  44.             System.out.println(k+" = "+v);   
  45.         }   
  46.     }   
  47. }  
分享到:
评论

相关推荐

    Java HashMap 如何正确遍历并删除元素的方法小结

    主要介绍了Java HashMap 如何正确遍历并删除元素的方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java遍历特例

    java Map 遍历方法 Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); ...

    Java如何在List或Map遍历过程中删除元素

    相信大家在日常的开发过程中,经常需要对List或Map里面的符合某种业务的数据进行删除,但是如果不了解里面的...下面这篇文章将会给大家详细介绍Java如何在List和Map遍历过程中删除元素,有需要的朋友们可以参考借鉴。

    Collection,List,Set和_Map用法和区别

    Collection 是 Java 中的一种对象集合,提供了许多有用的方法来操作集合元素,例如添加、删除、遍历等。Collection 是一个接口,下面有两个子接口:List 和 Set。 List 是一种有序的集合,元素可以重复,通过索引来...

    实验05 Java集合.doc

    4)打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 3、编写程序练习Map集合的基本使用: 1)创建一个只能容纳String对象的...

    40道java集合面试题含答案(很全很详细)

    List接口提供了按照索引位置访问元素的方法,以及添加、删除和修改元素的操作。List接口的实现类包括ArrayList、LinkedList等。 Set接口是无序的集合,元素不能重复。Set接口的实现类包括HashSet、LinkedHashSet等...

    vector, list, map在遍历时删除符合条件的元素实现方法

    下面小编就为大家带来一篇vector, list, map在遍历时删除符合条件的元素实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java语言的Util类详细介绍

    当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。 Vector类非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是...

    java中HashMap详解

    高性能:由于使用了哈希表,HashMap在查找、插入和删除元素时具有较高的性能。但是,如果哈希函数的设计不合理,可能会导致哈希冲突,从而影响性能。 无序:HashMap中的元素没有固定的顺序,可以通过迭代器或for-...

    疯狂JAVA讲义

    学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...

    JAVA面试题最全集

    数据结构,如何遍历List中的元素? 如果要按照键值保存或者访问数据,使用什么数据结构? 要掌握Collection相关的接口和类的使用 56.使用StringBuffer类与String类进行字符串连接时有何区别? 57.调用Thread类的...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    5.1.4 数组元素的值内有乾坤 105 5.1.5 创建数组的简洁语法 106 5.2 数组的“名”与“实” 107 5.2.1 “名”与“实”分离的数组 107 5.2.2 一“实”多“名”的数组 109 5.2.3 一“实”多“名”带来的困惑 111 ...

    java 面试题 总结

    栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 19、forward 和redirect的区别 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    5.1.4 数组元素的值内有乾坤 105 5.1.5 创建数组的简洁语法 106 5.2 数组的“名”与“实” 107 5.2.1 “名”与“实”分离的数组 107 5.2.2 一“实”多“名”的数组 109 5.2.3 一“实”多“名”带来的困惑 111 ...

    Java面试宝典2020修订版V1.0.1.doc

    30、Map怎么遍历 76 31、怎么获取Map所有的key,所有的value 77 32、获取Class的实例有几种方式 77 33、怎么获取类中所有的方法,所有属性 77 34、JDBC常用接口有哪些? 77 35、Statement 中execute、executeUpdate...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第1章 Java应用分层架构及软件模型  1.1 应用程序的分层体系结构  1.1.1 区分物理层和逻辑层  1.1.2 软件层的特征  1.1.3 软件分层的优点  1.1.4 软件分层的缺点  1.1.5 Java应用的持久化层  1.2 软件的模型 ...

    习----题-Java-Web程序设计教程-[共2页].pdf

    因此在 第 行部分在取出 List 中的元素时就不需要再强制转换了。 另外,在前面的比较接口中也可以使用泛型,例如例 3.3 的 MyCmp 类还可以这样来实现, 请看如下语句。 public class MyCmp implements Comparator...

    超级有影响力霸气的Java面试题大全文档

     栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 22、forward 和redirect的区别  forward是服务器请求资源,服务器直接访问目标地址的URL,把...

Global site tag (gtag.js) - Google Analytics