`
liyebing
  • 浏览: 57619 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Map.keySet()相关的一个小问题

 
阅读更多

今天项目中遇到一个小问题,类似的代码如下:

 

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 
 * @author liyebing
 * @version $Id: TestError.java, v 0.1 2011-7-20 下午10:59:59 liyebing Exp $
 */
public class TestError {
    
    public static void main(String[] args) {
        Map<String,String> map1=new HashMap<String,String>();
        map1.put("key1", "value1");
        map1.put("key2", "value2");
        
        List<String> list1=new ArrayList<String>();
        list1.add("list1");
        
        Set<String> set1= map1.keySet();
        set1.addAll(list1);
    }

}

 

   初看,貌似没啥问题,一运行,在最后一行set1.addAll(list1);会抛出下面的异常:

   Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractCollection.add(Unknown Source)
    at java.util.AbstractCollection.addAll(Unknown Source)
    at demo.lucene.chart1.TestError.main(TestError.java:29)

 

    其实只要是向set1中添加值,都会出现这个异常。具体原因我没去分析,估计是添加值会影响到map1中的key的集合。

    记录一下,下次编码避免这个陷阱。

分享到:
评论

相关推荐

    java中Map集合的常用遍历方法及HashMap的应用实例

    1、遍历Map.entrySet():它的每一个元素都是Map.Entry对象,这个对象中, 放着的就是Map中的某一对key-value; 2、遍历Map.keySet():它是Map中key值的集合,我们可以通过遍历这个集合来 读取Map中的元素; 3、...

    Java Map 遍历比较齐全的解析.docx

    - **方法一:通过`Map.keySet()`遍历** 这是最基础的遍历方式,通过获取`Map`的`keySet`,然后用增强型for循环遍历`keySet`,再通过`get()`方法获取对应的`value`。 ```java for (Integer in : map.keySet()) { ...

    Map集合的四种遍历方式 .txt

    `Map.keySet()`方法可以返回一个包含所有键的`Set`视图。我们可以通过这个`Set`来获取每一个键,进而使用`Map.get(key)`方法获取与该键对应的值。 **代码示例:** ```java for (Integer key : map.keySet()) { ...

    JavaMap.rar_arraylist map_collection_java map_javamap_地图 java

    ArrayList是List接口的一个具体实现,它基于动态数组。ArrayList的特点是可以快速访问任意位置的元素,但插入和删除元素的效率相对较低,因为需要移动后续元素。常用操作有: 1. 创建ArrayList:`List&lt;String&gt; list...

    另一种遍历Map的方式

    Map.entrySet()是一个方法,返回一个Set&lt;Map.Entry,V&gt;&gt;,其中包含了Map中的所有映射项。 遍历Map的方式 ------------- 有多种遍历Map的方式,我们来讨论使用Map.Entry和Map.entrySet()的方式。 ### 方法一:使用...

    金陵科技学院软件院大二上Java高级1212Map.docx

    - **keySet()**: 返回一个Set视图,包含Map中的所有键。可以遍历这个Set来获取键值对的键: ```java for (String key : map.keySet()) { Integer value = map.get(key); System.out.println(key + "=" + value)...

    map遍历的四种方法

    这种方法首先获取`Map`的所有键集合(`keySet`),然后通过迭代器或者增强型for循环(也称为foreach循环)遍历这些键,并使用`get()`方法获取与每个键相对应的值。 **示例代码:** ```java public static void main...

    java遍历大容量map的正确方法.pdf

    在Java编程中,遍历大容量的Map是一个常见的操作,特别是在处理大数据或内存优化的场景下,选择正确的遍历方式至关重要。以下是对标题和描述中提及的四种遍历Map方法的详细说明: 1. **通过Map.keySet遍历key和...

    怎样遍历一个HashMap?

    可以通过2种方法遍历HashMap &lt;br&gt;Map map... &lt;br&gt;for (Iterator iter = map.keySet().iterator(); iter.hasNext();) { &lt;br&gt; Object key = iter.next(); &lt;br&gt; Object val = map.get(key); &lt;br&gt;} &lt;br&gt;

    JAVA遍历Map所有元素.doc

    首先,`keySet()`返回的是Map中所有键的`Set`集合,然后我们可以通过迭代这个键集,每次迭代获取一个键,再通过`Map.get(key)`获取对应的值。以下是示例代码: ```java Map, String&gt; map = new HashMap(); // 填充...

    Map集合的遍历.md

    `Map`集合的主要特点是每个元素都包含一个唯一的键(Key)以及与之对应的值(Value)。Java中的`Map`接口主要有三种实现类:`HashMap`、`Hashtable`、`TreeMap`等,这些实现类在实际应用中各有特点。本篇文章将详细...

    计算机遍历Map集合.pdf

    1. **遍历键集合**:Map集合提供了keySet()方法,返回一个包含所有键的Set视图。可以通过迭代器或增强for循环遍历这个键集合,然后使用get()方法获取对应的值。例如: ```java Set&lt;Object&gt; keys = map.keySet(); for...

    java中map集合的用法.doc

    - `putAll(Map t)`:将一个Map的所有键值对复制到当前Map。 6. **Map的视图和迭代**: - `entrySet()`:返回Map中所有键值对的Set视图,可遍历键值对。 - `keySet()`:返回Map中所有键的Set视图,可遍历键。 - ...

    map遍历的三种方法

    Map 遍历是集合操作中的一种重要操作,一般来说,有三种方式来遍历 Map 集合:使用 values() 方法遍历、使用 keySet() 方法遍历和使用 entrySet() 方法遍历。 第一种方法:使用 values() 方法遍历 这个方法是最...

    遍历Map集合.pdf

    本文主要讲解了在Java中如何遍历Map集合,这是在日常编程中经常遇到的一个操作,特别是在需要处理键值对数据时。以下将详细介绍Map集合的遍历方法以及一些相关的知识点。 首先,Map是Java集合框架中的一个接口,它...

    Java集合框架Map接口.pdf

    7. `keySet()`:返回一个Set集合,包含Map中的所有键。 8. `values()`:返回一个Collection集合,包含Map中的所有值。 9. `entrySet()`:返回一个Set集合,包含Map中的所有键值对。这是遍历Map最常用的方式,因为...

    Java使用keySet方法获取Map集合中的元素

    Map集合中的keySet方法是Java语言中一个非常重要的方法,它可以将Map集合中的所有key值存入到Set集合中,然后我们可以通过Set集合的迭代器方法获取到每一个key值,再通过key值获得相应的value值。 下面是一个使用...

    Java中如何遍历Map对象的4种方法_.docx

    for (Integer key : map.keySet()) { System.out.println("Key = " + key); } // 遍历 values for (Integer value : map.values()) { System.out.println("Value = " + value); } ``` 3. **使用 Iterator ...

    java遍历Map对象的说有数据

    在Java编程中,`Map`接口是Java集合框架中的一个关键组成部分,它用于存储键值对。本篇文章将详细解释如何遍历`Map`对象的所有数据,并介绍几种常见的遍历方法。我们将重点讨论通过`entrySet()`方法和`keySet()`方法...

Global site tag (gtag.js) - Google Analytics