java map key可以重复吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java map key可以重复吗相关的知识,希望对你有一定的参考价值。

如果重复添加的话,hashmap会自动覆盖key一样的数据,保证一个key对应一个value

也就是说,你只要把一个map2里的数据按照key一个一个都加到map1里去就行了,但是这样会破坏map1
如果是想保持原来的不变,可以先新建一个空的hashmap,把map1和map2的数据都加进去就可以了

HashMap map3 = new HashMap();
for (Object key : map1.keySet())
map3.put(key, map1.get(key));
for (Object key : map2.keySet())
map3.put(key, map2.get(key));
可以根据具体的类型加上泛型模板
分享
参考技术A 不可以。
Map param = new HashMap();
param.put("a","123");
system.out.println(param.get("a")); //123
param.put("a","456");
system.out.println(param.get("a")); //456
后面的key(a),会把前面的key值替换
参考技术B 不会有重复的key,相同的key,后put 的value会覆盖已存在的value 参考技术C 可以重复,但是后面的值会替换前面的值,而map这个特性,一般情况下还可以根据此特性做相关操作开发。

java_Map集合

 1 import java.util.HashMap;
 2 
 3 public class MapTest 
 4 /**
 5  * 1.Map集合是双列几个,一个元素包含两个值(key,value)
 6  * 2.Map集合中的元素,key和value的数据类型可以相同也可以不同
 7  * 3.Map集合中的元素Key不可以重复,value可以重复
 8  * 4.Map集合中的元素,key和value一一对应
 9  *
10  * 常用实现类:
11  * java.tuil.hashMap<k,v>集合,implements Map<k,v>接口
12  * 1。hashMap集合底层是哈希表,查询的速度特别快
13  *             jdk1.8前:数组+单向链表
14  *             jdk1.8后:数组+单项链表/红黑树
15  * 2.hashMap是无序集合
16  *
17  * LinkedHashMap特点:
18  * 1.LinkedHashMap集合迪底层是哈希表+链表
19  * 2.LinkedHashMap集合是一个有序的集合,储存元素和取出元素的顺序是一致的
20  *
21  * 方法:
22  * put(k,v):添加,返回v:key不重复返回v是null,key重复会替换value返回被替换值
23  * remove(object key):把指定键对应的value删除,返回删除元素,key存在返回v,key不存在返回null
24  * get(k):k存在返回value,k不存在返回null
25  * containskey(k):判断是否包含k,包含返回true,不包含返回false
26  */
27 public static void main(String[] args) 
28     HashMap<String, String> hashMap = new HashMap<>();
29     String put1 = hashMap.put("杨过", "小龙女");
30     String put2 = hashMap.put("冷锋", "龙小云");
31     String put3 = hashMap.put("A", "B");
32     System.out.println("put1:"+put1);
33     System.out.println("put2:"+put2);
34     System.out.println("put3:"+put3);
35     System.out.println(hashMap);
36     System.out.println(hashMap.get("杨过"));
37     hashMap.remove("杨过");
38     System.out.println(hashMap);
39     System.out.println(hashMap.containsKey("杨过"));
40 
41 
 1  /**
 2  * 遍历:
 3  * keySet():所有key添加到set集合中
 4  * 遍历set集合获取map结合中的每一个key
 5  * 通过getkey找到value
 6  */
 7  public static void main(String[] args) 
 8      HashMap<String, String> hashMap = new HashMap<>();
 9      String put1 = hashMap.put("杨过", "小龙女");
10      String put2 = hashMap.put("冷锋", "龙小云");
11      String put3 = hashMap.put("A", "B");
12      Set<String> strings = hashMap.keySet();
13      for (String string : strings) 
14          System.out.println(hashMap.get(string));
15      
16  
 1  /** Entry键值对对象被:
 2       * 在map接口中有一个内部类接口Entry
 3       * 作用:当map结合一创建,就在map集合中创建一个Entry对象,用来记录键与值(键值对对象,键与值的映射关系)
 4       * 方法:
 5       * entrySet():把map集合内部的多个Entry对象取出来存储到一个Set集合中
 6       * getkey
 7       * getvalue
 8       */
 9      public static void main(String[] args)
10          HashMap<String, String> hashMap = new HashMap<>();
11          String put1 = hashMap.put("杨过", "小龙女");
12          String put2 = hashMap.put("冷锋", "龙小云");
13          String put3 = hashMap.put("A", "B");
14          Set<Map.Entry<String, String>> entries = hashMap.entrySet();
15          for (Map.Entry<String, String> entry : entries) 
16              System.out.println(entry.getKey());
17              System.out.println(entry.getValue());
18          
19      
20 
 1  /** hashMap:存储自定义类型键值
 2       * map集合保证key是唯一的:作为key元素必须重写hashCode和equals方法保证key的唯一性
 3       *
 4       * LinkedHashMap entends HashMap
 5       * 哈希表+链表
 6       * key不允许重复,有序集合
 7       *
 8       *
 9       * Hashtable集合 implements Map接口
10       * 底层是哈希表,是线程安全的速度慢
11       *Hashtable集合不能储存null值,null键
12       * Hashtable和vector集合一样,在jdk1.2版本之后被先进的集合(HashMap,ArrayList)取代了
13       *Hashtable的子类properties一样活跃在历史舞台
14       * properties集合是一个唯一和IO流相结合的集合
15       *
16       * Map集合练习:
17       * 需求:计算一个字符串中每个字符出现的个数
18       * 1.使用Scanner获取用户输入字符串
19       * 2.创建Map集合,key是字符串中的字符,value是字符个数
20       * 3.遍历字符串,获取每一个字符
21       * 4.使用获取到的字符去Mao集合中判断key是否存在
22       *      如果存在:
23       *          通过key获取value并++
24       *      如果不存在:
25       *          put(k,1)
26       * 5.遍历集合
27       *
28       * jdk9对集合添加的优化:
29       * list接口,Set接口,Map接口:增加一个静态的方法of,可以给集合一次添加多个元素
30       * 使用前提:当几个中存储的元素的个数已经确定了,不在改变
31       * 注意事项:
32       *      1.of方法只适用于List接口,Set接口,Map接口,不适用于接口的实现类
33       *      2.of方法的返回值是一个不能改变的集合,集合不能在使用add,put方法添加元素,会抛出异常
34       *      3.Set接口和Map接口在调用of方法时不能有重复元素,否则会抛出异常
35       *
36       *
37       */

 

以上是关于java map key可以重复吗的主要内容,如果未能解决你的问题,请参考以下文章

java map key可以重复吗

java map的key可以重复吗

map的key可以重复吗

hashmap的key可以重复吗

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

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