0

HashMap命名map中,我复制了keys但我仍然没有得到任何密钥复制的运行时异常。为什么会这样?

map 数据结构不能有重复的键。

import java.util.*;

class KeyTest {
    public static void main(String args[]) {
        Map<String,String> map = new HashMap<String,String>();
        map.put("key-1","val");
        map.put("key-1","val");
        map.put("key-1","val");
        map.put("key-1","val");
        map.put("key-1","val");
    }
}
4

3 回答 3

5

你不会得到任何。exception它只是value用那个覆盖现有的key

它在HashMap#Put()的文档中提到

将指定的值与此映射中的指定键相关联。如果映射先前包含键的映射,则替换旧值。

 map.put("key-1","val1");
 map.put("key-1","val2");

在这种情况下,电流value为,因为key key-1被替换。"val2""val1"

于 2013-08-27T09:41:09.633 回答
1

根据地图#put

将指定值与此映射中的指定键关联(可选操作)。如果映射先前包含键的映射,则旧值将替换为指定值。

返回:
与 key 关联的前一个值,如果没有 key 映射,则返回 null。(如果实现支持空值,则返回空值还可以指示映射先前将空值与键关联。)

于 2013-08-27T09:43:36.883 回答
1

Map.put不会在重复键上抛出异常。你可以测试put的返回值,如果不是null那么key是重复的。如果是,null则取决于具体的地图实现是否允许空值。HashMap做。

于 2013-08-27T09:45:32.430 回答