`
宋双旺
  • 浏览: 154376 次
  • 性别: 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 遍历MAP的几种方法示例代码

    遍历Map是常见的操作,用于访问或处理Map中的所有元素。以下是Java中遍历Map的几种常见方法,包括使用增强的for循环、迭代器以及通过keySet()和entrySet()方法: 1. **增强的for循环(foreach)** 增强的for循环是...

    java集合map取key使用示例 java遍历map

    - 当遍历Map时,修改Map(如添加、删除键值对)可能会导致迭代器抛出`ConcurrentModificationException`。为避免这种情况,可以使用`Iterator.remove()`方法删除元素,或者在遍历前复制Map(如使用`new HashMap(map...

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

    Java HashMap 是一种常用的数据结构,用于存储键值对儿,但是在遍历和删除元素时,需要注意一些特殊的情况,否则可能会出现异常或错误。本文将介绍 Java HashMap 遍历和删除元素的正确方法。 一、HashMap 遍历方法 ...

    Java遍历Map对象的四种方式

    如果只需要遍历Map的键或值,可以选择这种方式。通过`map.keySet()`获取键集合,或者`map.values()`获取值集合,再进行for-each循环。在性能上,这种方式略优于`entrySet()`,代码也更为简洁。 ```java // 遍历键 ...

    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哈希遍历_哈希遍历_

    - 遍历HashMap时,由于内部实现细节,顺序可能不稳定,因为哈希函数可能会导致元素在数组中的顺序发生变化。如果需要稳定的遍历顺序,可以考虑使用`LinkedHashMap`,它在保持效率的同时,按照插入顺序或访问顺序遍历...

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

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

    java中map的使用实例

    遍历Map有多种方式,一种是使用`entrySet()`,它可以返回Map中所有的键值对: ```java for (Map.Entry, Integer&gt; entry : map.entrySet()) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry....

    JavaMap.rar_arraylist map_collection_java map_javamap_地图 java

    总的来说,理解和熟练使用Java的Map接口及其实现类对于任何Java开发者来说都是至关重要的,它们在处理各种数据存储和查找问题时都能发挥巨大作用。同时,ArrayList作为常用的列表实现,也是编程实践中经常遇到的工具...

    使用Iterator接口遍历集合元素

    在使用 Iterator 遍历集合元素时,需要注意以下几点: 1. Iterator 不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量。因此,修改迭代变量的值对集合元素本身没有任何改变。 2. 当使用 ...

    java map实例,排序

    `LinkedHashMap`是另一种Map实现,它保持了元素插入的顺序,即遍历Map时,元素会按照插入时的顺序返回。此外,如果在调用putAll()方法或迭代更新时指定了`accessOrder`参数为true,那么`LinkedHashMap`还会根据访问...

    易语言仿java集合 list map源码

    例如,他们可能会创建一个List类,包含添加、删除、查找、遍历等方法,以支持对元素的操作。对于Map,可能需要实现插入、删除、获取键值对、遍历键值对等功能。 `java对象模块.e`可能是一个包含了易语言中对Java...

    Java 实例 - HashMap遍历源代码-详细教程.zip

    - **foreach循环**:Java 5引入了增强的for循环(也称为foreach),可以直接遍历Map的键值对,例如:`for (Map.Entry, Value&gt; entry : map.entrySet()) {...}` 4. **源代码解析**: - `put`操作:当插入新的键值...

    java数据结构 ArrayList、Stack、Map

    在Java编程语言中,数据结构是组织和存储数据的关键元素,它们提供了高效访问和操作数据的方式。本主题将深入探讨ArrayList、Stack和Map这三种重要数据结构,它们各自具有独特的特性和用途。 **ArrayList** 是Java...

    Java二维数组实现简单Map

    3. **删除(Remove)**:删除一个键值对可能比较复杂,因为数组是固定大小的,我们不能直接删除一个元素。一种可能的方法是标记该位置为无效(例如,用特殊值表示)并维护一个额外的列表来跟踪有效的键值对。 4. **...

    java中Map类.pdf

    `entrySet()`返回Map中所有键值对的Set视图,这是遍历Map常用的方式。 SortedMap是Map的一个扩展,它要求键保持排序顺序,通常使用TreeMap实现。如果你需要按特定顺序访问键,SortedMap是一个不错的选择。 在选择...

    java中map集合的用法.doc

    在Java 1.5及以上版本中,可以使用增强的for循环(foreach)来遍历Map,如下所示: ```java Map, String&gt; m = new HashMap(); // 添加键值对... for (String key : m.keySet()) { String value = m.get(key); // ...

    数据结构-映射(Map)介绍和Java示例代码

    这意味着当你遍历Map时,除非进行了排序操作,否则无法预测元素的输出顺序。这与列表或数组等线性数据结构不同,后者通常保持插入时的顺序。 **动态大小**:Map的大小可以根据需要动态调整。你可以随时添加新的键值...

    java中的各种集合及其遍历总结(附完整例子)

    ArrayList基于动态数组,插入和删除操作在中间位置相对较慢,但在随机访问元素时表现出色。LinkedList则采用双向链表结构,适合于频繁的插入和删除操作,但访问元素的速度较慢。 ArrayList示例: ```java List...

    java map集合

    HashMap在插入和查找元素时,首先会计算键对象的哈希值,然后根据哈希值决定元素在内部数组中的位置。 TreeMap则基于红黑树数据结构,它维护了键的自然排序或者自定义比较器的排序。插入和查找的平均时间复杂度为O...

Global site tag (gtag.js) - Google Analytics