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可以重复吗的主要内容,如果未能解决你的问题,请参考以下文章