`
宋双旺
  • 浏览: 156847 次
  • 性别: 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`(例如添加或删除元素),可能会引发`ConcurrentModificationException`异常。因此,在遍历的同时不要修改`Map`。 - 使用流API遍历时,虽然代码更简洁,但性能上可能...

    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 // 遍历键 ...

    map遍历的四种方式及性能比较

    ### Java中遍历Map的四种方式及性能比较 在Java编程中,`Map`是一种非常重要的数据结构,用于存储键值对。对于`Map`的遍历,不同的遍历方式有着不同的性能表现以及适用场景。本文将详细介绍四种常见的遍历`Map`的...

    java遍历特例

    在Java编程中,遍历Map是一种常见的操作方式,尤其在处理键值对数据时尤为重要。本文档主要介绍了几种常用的遍历`Map`的方法,包括使用传统的迭代器、增强for循环(引入于JDK 1.5)以及对`TreeSet`进行排序的示例。 ...

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

    总结来说,在Java中遍历List或Map并删除元素时,应该避免在迭代过程中直接修改集合,而应该使用迭代器来管理删除操作。对于List,可以使用索引下标加调整索引,或者直接使用迭代器;对于Map,应根据需求选择键迭代或...

    java哈希遍历_哈希遍历_

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

    Java Map 集合类简介

    在遍历Map时,需要注意迭代器的使用,例如: ```java Iterator&lt;Map.Entry, Value&gt;&gt; entries = map.entrySet().iterator(); while (entries.hasNext()) { Map.Entry, Value&gt; entry = entries.next(); Key key = ...

    HashMap遍历

    在Java编程中,`HashMap`是一种常用的数据结构,它实现了`Map`接口,提供了基于哈希表的存储方式,允许我们快速地查找、插入和删除键值对。对于`HashMap`的遍历,是进行数据处理和分析时不可或缺的操作。本文将深入...

    Java中遍历Map的多种方法示例及优缺点总结

    在Java编程中,遍历Map是非常常见的操作,用于访问存储的键值对。本文将详细介绍Java中遍历Map的四种主要方法:`keySet`、`values`、`entrySet`以及使用`Iterator`和`Lambda表达式`,并分析它们的优缺点。 1. **...

    java中map的使用实例

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

    java中map集合的用法.doc

    `putAll()`方法虽然可以批量插入键值对,但如果Map没有预先调整大小,可能会在添加大量元素时不如逐个`put()`高效。不过,`putAll()`会在添加元素前调整Map的容量,这在某些情况下可能比预期更有效。 9. **选择...

    JavaMap.rar_arraylist map_collection_java map_javamap_地图 java

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

    JAVA_MAP_+_LIST_SET和MAP的区别+_Map的三种遍历方法

    ### JAVA Map、List、Set 的区别 #### 一、概述 在 Java 集合框架中,`Map`、`List` 和 `Set` 是三种非常重要的数据结构,它们各自有着不同的特性和用途。 - **Map**:主要用于存储键值对(key-value pairs)。键...

    Java Map遍历方法

    以上就是Java中遍历Map的常见方法,根据实际需求选择合适的方式。在遍历过程中,要注意不要修改正在遍历的集合,以避免`ConcurrentModificationException`。此外,理解各种遍历方式的性能和顺序差异也是很重要的。

    使用Iterator接口遍历集合元素

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

    java实现的map排序

    需要注意的是,TreeMap在插入和删除元素时的性能为O(log(n)),而在查找时的性能为O(log(n))。如果需要频繁地插入、删除、查找操作,TreeMap是一个很好的选择。但是,如果只需要一次排序,之后只进行读取操作,则可以...

    易语言仿java集合 list map源码

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

Global site tag (gtag.js) - Google Analytics