测试用例:

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)); }
}

  

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;
}
}

  

最新文章

  1. rabbitmq消息队列——&quot;topic型交换器&quot;
  2. 关注经典:CSS Awards 获奖网站作品赏析《第一季》
  3. python列表分组的技巧
  4. java里的基本数据类型
  5. 如何通过 jQuery text() 和 html()
  6. PHP递归遍历指定文件夹内的文件
  7. Git 生成 SSH 公钥
  8. 雷达无线电系列(一)几种常见的幅度分布函数(matlab)
  9. mssql sqlserver获取指定月份当月天数总和
  10. 《玩转Django2.0》读书笔记-探究视图
  11. webpack简单修改版本号(单页面)
  12. 一点不懂到小白的linux系统运维经历分享
  13. Luogu3163 [CQOI2014]危桥 ---- 网络流 及 一个细节的解释
  14. Maven项目下update maven后Eclipse报错
  15. OpenGL秒安装及显示
  16. linux上搭建solr(用jetty部署)
  17. .net4.0多进程间共享内存实现通信(VB.Net)
  18. String真的是不可变的吗?
  19. [Jxoi2012]奇怪的道路 BZOJ3195 状压DP
  20. TCP报文的最大负载和报文的最小长度

热门文章

  1. HttpCookie加匿名类实现多语言
  2. Cron表达式备忘
  3. RCP:导航器视图删除操作快捷键失效的解决方案
  4. Android(shape.xml)
  5. Win10 UWP开发中的重复性静态UI绘制小技巧 2
  6. Apache Thrift 跨语言服务开发框架
  7. JavaScript使用DeviceOne开发实战(二) 生成调试安装包
  8. 自定义项目脚手架- Maven Archetypes
  9. [.net 面向对象程序设计进阶] (8) 托管与非托管
  10. JavaScript获取两个数之间的任意随机数