java中map插入相同的key

简介:

测试用例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package  test;
 
import  org.junit.Test;
import  po.Person;
 
import  java.util.HashMap;
import  java.util.IdentityHashMap;
import  java.util.Map;
 
/**
  * Created by Administrator on 2015/9/16.
  */
public  class  TestMap {
     /**
      * map插入相同key问题,value会不会覆盖
      */
     @Test
     public  void  testMap(){
         //HashMap中key的内容相同,则覆盖
         Map<String,Object> map1 =  new  HashMap<>();
         map1.put( "张三" , 1 );
         map1.put( "张三" , 2 );
         map1.put( new  String( "张三" ), 3 );   //根据String特性,这三条内容相同,前两条地址相同
         map1.put( "李四" 4 );
         for  (String s : map1.keySet()) {
             System.out.println(s+ "======" +map1.get(s));
         }
         /** 结果
          *   张三======3
              李四======4
          */
 
         System.out.println( "=====================================" );
         //IdentityHashMap中key的内存地址必须完全相同才会覆盖
         Map<String,Object> map2 =  new  IdentityHashMap<>();
         map2.put( "张三" , 1 );
         map2.put( "张三" , 2 );
         map2.put( new  String( "张三" ), 3 ); //
         map2.put( "李四" 4 );
         for  (String s : map2.keySet()) {
             System.out.println(s+ "====" +map2.get(s));
         }
         /**
          * 李四====4
          张三====2
          张三====3
          */
 
         System.out.println( "=====================================" );
 
         Map<Person,Object> map3 =  new  IdentityHashMap<>();
         map3.put( new  Person( "张三" 11 ),  1 );
         map3.put( new  Person( "张三" 11 ),  3 );
         map3.put( new  Person( "李四" 11 ),  4 );
         for  (Person s : map3.keySet()) {
             System.out.println(s.toString()+ "====" +map3.get(s));
         }
         /**
          * po.Person@165474cf====1
          po.Person@3ff2caf4====4
          po.Person@2c0cd7d====3
          */
         System.out.println( "=====================================" );
         Person person =  new  Person( "张三" 11 );
         Person person2 =  new  Person( "张三" 11 );
         System.out.println(person.equals(person2));
 
     }
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package  po;
 
/**
  * Created by Administrator on 2015/9/16.
  */
public  class  Person {
     int  id;
     String name;
     int  age;
 
     @Override
     public  String toString() {
         return  "Person{"  +
                 "id="  + id +
                 ", name='"  + name + '\ ''  +
                 ", age="  + age +
                 '}' ;
     }
 
     @Override
     public  boolean  equals(Object o) {
         if  ( this  == o)  return  true ;
         if  (o ==  null  || getClass() != o.getClass())  return  false ;
 
         Person person = (Person) o;
 
         if  (id != person.id)  return  false ;
         if  (age != person.age)  return  false ;
         return  !(name !=  null  ? !name.equals(person.name) : person.name !=  null );
 
     }
 
     @Override
     public  int  hashCode() {
         int  result = id;
         result =  31  * result + (name !=  null  ? name.hashCode() :  0 );
         result =  31  * result + age;
         return  result;
     }
 
     public  Person(String name, int  age){
 
         this .name=name;
         this .age=age;
     }
}

  本文转自Ryan.Miao博客园博客,原文链接:http://www.cnblogs.com/woshimrf/p/4813664.html,如需转载请自行联系原作者

相关文章
|
5天前
|
存储 安全 Java
Java一分钟之-Map接口与HashMap详解
【5月更文挑战第10天】Java集合框架中的`Map`接口用于存储唯一键值对,而`HashMap`是其快速实现,基于哈希表支持高效查找、添加和删除。本文介绍了`Map`的核心方法,如`put`、`get`和`remove`,以及`HashMap`的特性:快速访问、无序和非线程安全。讨论了键的唯一性、`equals()`和`hashCode()`的正确实现以及线程安全问题。通过示例展示了基本操作和自定义键的使用,强调理解这些概念对编写健壮代码的重要性。
10 0
|
5天前
|
存储 Java
【JAVA基础篇教学】第十篇:Java中Map详解说明
【JAVA基础篇教学】第十篇:Java中Map详解说明
|
5天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
5天前
|
Java
java Map删除值为null的元素
java Map删除值为null的元素
|
5天前
|
Java fastjson
Java将Map转换为实体类
Java将Map转换为实体类
|
5天前
|
存储 安全 Java
[Java基础面试题] Map 接口相关
[Java基础面试题] Map 接口相关
|
5天前
|
存储 算法 Java
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
30 0
|
5天前
|
存储 算法 安全
Java Map:键值对的奇妙之旅
Java Map:键值对的奇妙之旅
44 0
Java Map:键值对的奇妙之旅
|
5天前
|
存储 安全 Java
Java集合详解(List、Map、Set)
Java集合详解(List、Map、Set)
34 4
|
5天前
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map ‘quanZiController‘ method
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map ‘quanZiController‘ method
17 0