问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java map key可以重复吗

发布网友 发布时间:2022-04-22 04:53

我来回答

4个回答

热心网友 时间:2023-11-05 20:31

在Java中,有一种key值可以重复的map,就是IdentityHashMap。在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 。在正常的Map 实现(如 HashMap)中,当且仅当满足下列条件时才认为两个键 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2))。

  IdentityHashMap类利用哈希表实现 Map 接口,比较键(和值)时使用引用相等性代替对象相等性。该类不是 通用 Map 实现!此类实现 Map 接口时,它有意违反 Map 的常规协定,该协定在比较对象时强制使用 equals 方法。此类设计仅用于其中需要引用相等性语义的罕见情况。

  具体说明,详见:http://download.oracle.com/javase/6/docs/api/java/util/IdentityHashMap.html

http://www.cjsdn.net/Doc/JDK50/java/util/IdentityHashMap.html

  在使用IdentityHashMap有些需要注意的地方:

  例子1:

[java] view plain copy
IdentityHashMap<String,Object> map =newIdentityHashMap<String,Object>();
map.put(newString("xx"),"first");
map.put(newString("xx"),"second");
for (Entry<String, Object> entry : map.entrySet()) {
System.out.print(entry.getKey() +" ");
System.out.println(entry.getValue());
}
System.out.println("idenMap="+map.containsKey("xx"));
System.out.println("idenMap="+map.get("xx"));
输出结果是:

[plain] view plain copy
xx first
xx second
idenMap=false
idenMap=null

  例子2:

[java] view plain copy
IdentityHashMap<String,Object> map =newIdentityHashMap<String,Object>();
String fsString =newString("xx");
map.put(fsString,"first");
map.put(newString("xx"),"second");
for(Entry<String, Object> entry : map.entrySet()) {
System.out.print(entry.getKey() +" ");
System.out.println(entry.getValue());
}
System.out.println("idenMap="+map.containsKey(fsString));
System.out.println("idenMap="+map.get(fsString));

输出结果是:

[plain] view plain copy
xx second
xx first
idenMap=true
idenMap=first

  例子3:

[java] view plain copy
IdentityHashMap<String,Object> map =newIdentityHashMap<String,Object>();
String fsString =newString("xx");
map.put(fsString,"first");
map.put(fsString,"second");
for(Entry<String, Object> entry : map.entrySet()) {
System.out.print(entry.getKey() +" ");
System.out.println(entry.getValue());
}
System.out.println("idenMap="+map.containsKey(fsString));
System.out.println("idenMap="+map.get(fsString));

输出结果是:

[plain] view plain copy
xx second
idenMap=true
idenMap=second

例子4:

[java] view plain copy
IdentityHashMap<String,Object> map =newIdentityHashMap<String,Object>();
String fsString =newString("xx");
String secString =newString("xx");
map.put(fsString,"first");
map.put(secString,"second");
for(Entry<String, Object> entry : map.entrySet()) {
System.out.print(entry.getKey() +" ");
System.out.println(entry.getValue());
}
System.out.println("idenMap="+map.containsKey(fsString));
System.out.println("idenMap="+map.get(fsString));

System.out.println("idenMap="+map.containsKey(secString));
System.out.println("idenMap="+map.get(secString));

输出结果是:

[plain] view plain copy
xx first
xx second
idenMap=true
idenMap=first
idenMap=true
idenMap=second

热心网友 时间:2023-11-05 20:32

不可以,map是无序的,它的查询需要通过key的值来查找,如果你定义两个同样的key,那么一个key就对应了多个值,这样就违背了java对map的定义,键和值是一一对应的。所以key不可以重复

热心网友 时间:2023-11-05 20:32

key唯一但是值却可以重复

热心网友 时间:2023-11-05 20:33

key肯定不能重复啊,如果重复了怎么找到对应的value
java map的key可以重复吗

不会重复,,,有相同的key,会把之前的value覆盖 。。。

java map中如何判断key是否相同

key,存储的是一个对象的引用,只要两个引用指向同一个内存地址,那么这两个key就是相同的。

java map key可以重复吗

在Java中,有一种key值可以重复的map,就是IdentityHashMap。在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 。在正常的Map 实现(如 HashMap)中,当且仅当满足下列条件时才认为两个键 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2))。IdentityHashMap类利用哈...

java map哪些不能存储重复的key?

JAVA的MAP都不能存储重复的KEY\x0d\x0a我估计你想问题的问题是 JAVA的哪些容器不能储存重复的KEY吧?\x0d\x0a MAP,SET ,都不能储存重复的值.,并且保存的内容是没有顺序的.所以很多程序员用map或set来进行去重功能.\x0d\x0alist 是可以保存重复的值.而且保存的内容是有顺序的.所以可以通过...

java map的key可以重复吗

在java中,有一种key值可以重复的map,就是IdentityHashMap。在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 。在正常的Map 实现(如 HashMap)中,当且仅当满足下列条件时才认为两个键 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2))。IdentityHashMap类利用...

java map哪些不能存储重复的key?

JAVA的MAP都不能存储重复的KEY 我估计你想问题的问题是 JAVA的哪些容器不能储存重复的KEY吧?MAP,SET ,都不能储存重复的值.,并且保存的内容是没有顺序的.所以很多程序员用map或set来进行去重功能.list 是可以保存重复的值.而且保存的内容是有顺序的.所以可以通过list.get(index)来获得对应位置的数据.

Java中的Map允许有重复元素吗

{public static void main(String[] args) {String s1=new String("abc");String s2=new String("abc");Map map=new HashMap();map.put(s1, "abc123");map.put(s2, "ABC456");//第二个会覆盖第一个元素System.out.println(map.size());System.out.println(map.get(s1));} ...

java中的map用法(javamap的用法)

java为数据结构中的映射定义了一个接口java.util.MapMap主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。...

关于java TreeMap 的问题 一个key 可以有一个或多个values, 如何计算一...

map不能包含重复的key,但是可以包含同样的值。例如 姓名:张三 姓名:李四 错误。key重复 --- 姓名:张三 备注:张三 正确。value是可以重复的。=== -each key maps to at most one value 每个key最多(at most)对应一个value === -many-to-1 type of object 多对一类型的对象 如第一条...

java 有没有一个集合可以存放重复的key和value

有,将key值放入数组,数组作为hashmap的key。

map中的key可以重复吗 javamapkey java的map的key定义 java替换map的key javamapsortkey java判断map是否含有key java遍历map的key java key value java获取map的value
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
cf手游,抽到神器方法 cf手游六万钻石能不能把所有神器到手 玩cf的新手怎样才能有神器 南京托运汽车到广州大约多少钱 从济南大学西校区坐几路车到解放路 济南站到济南大学西校区济南大学西校区地址是 济南大学西校附近有没有302路公交车 江苏铭城建筑设计院有限公司何时获得甲级设计资质? 哪种保湿水隔离防辐射的功能比较强 谁知道哪个牌子的化妆品含有三角褐指藻多肽这个成分啊?哪里有卖? 如何在java中取map中的键值 的两种方法 梦幻西游好听家族名字 梦幻西游好听的名字?谁帮忙取下 java遍历Map的几种方法分析 梦幻西游叫什么名字好听,大家帮助下! java怎么得到map里面的所有key java怎么同时得到map的key和value值 java中Map集合如何修改里面的Key值? java 怎么取map 的key java语言如何循环读取Map对象内的数据 java怎样循环往map中存值 java map表里,key值能否映射到多个Value? java Map集合中存放不同的Key 且key 对应多个不同... java map的key可以重复吗 怎样检测苹果手机被换零件 买一手商铺需要交哪些税和贷款规则 个人按揭购买商铺的贷款额度是多少? 贷款买商铺条件是什么?贷款额度是多少 《庆余年》中长公主为何生下了林婉儿? 如何评价《庆余年》中林婉儿的人设? 十分梦幻西游帮起个好听的名字 java map 多少个key 私募基金对仓位有要求吗? 私募基金有什么投资策略? 吃饭行情下,私募基金如何布局 怎么有效缓解神经紧张 私募基金如何选择? 如何缓解精神紧张? 到底该如何挑选私募产品 如何解决精神紧张? 私募基金二级市场怎么投资 总是精神紧张怎么办? 心理学入门必读书籍。 心理学的书籍有哪些? 求郭德纲定场诗全集。 如何缓解神经紧张?总感觉自己身上难受。 私募基金公司团队怎么搭建 有很多歌的合集,里面有各种歌,叫什么名字? 私募基金单个投资项目风险如何控制? 走上人生的旅途吧。前途很远,也很暗。然而不要怕...