java中map插入相同的key
测试用例:
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;
}
}
java中map插入相同的key的更多相关文章
- Java中Map根据键值(key)或者值(value)进行排序实现
我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...
- java中Map,List与Set的差别
java中Map,List与Set的差别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,而且同一个数组 ...
- java中map接口hashMap以及Enty之间的用法和关系
java中map接口hashMap以及Enty之间的转换 首先说的是map接口: Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value ...
- Java中Map用法详解
原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...
- 将java中Map对象转为有相同属性的类对象(json作为中间转换)
java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...
- Java中Map<Key, Value>存储结构根据值排序(sort by values)
需求:Map<key, value>中可以根据key, value 进行排序,由于 key 都是唯一的,可以很方便的进行比较操作,但是每个key 对应的value不是唯一的,有可能出现多个 ...
- java中Map,List与Set的区别(转)
Set,List,Map的区别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,并且同一个数组只能存放类 ...
- java中Map,List与Set的区别
Set,List,Map的区别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,并且同一个数组只能存放类 ...
- Java中Map的使用
Map以按键/数值对的形式存储数据,和数组很类似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部类 ...
随机推荐
- Knockoutjs 实践入门 (3) 绑定数组
<form id="form1" runat="server"> <div> <!--text ...
- 负载均衡的mariadb集群搭建
集群介绍: Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎. 主要功能: 同步复制 真正的multi-master,即所有节点可以同 ...
- .Net平台下,分布式文件存储的实现
遇到的问题 对于Web程序,使用一台服务器的时候,客户端上传的文件一般也都是存储在这台服务器上.但在集群环境中就行不通了,如果每个服务器都存储自己接受到的文件,就乱套了,数据库中明明有这个附件的记录, ...
- nsq初探
一. 安装 参考:http://nsq.io/deployment/installing.htmlhttp://www.baiyuxiong.com/?p=873 (推荐.) 不推荐直接把官方的 ...
- asp.net core开发环境准备
1.1 安装sdk和运行时 浏览器打开网址https://www.microsoft.com/net/download, 到.Net Core下载页面. 根据操作系统,下载对应的SDK进行安装.安装 ...
- 谈谈对BPM的理解
BPM的产生缘由 近年来,随着计算机技术的发展和互联网时代的到来,我们已经进入了信息时代,也称为数字化时代,在这数字化的时代里,企业的经营管理都受到了极大的挑战.从上世纪90年代起至今,企业的信息化工 ...
- [PCB设计] 1、硬件原理图设计规范(一)——基本原则
1.1 目的 原理图设计是产品设计的理论基础,设计一份规范的原理图对设计PCB.跟机.做客户资料具有指导性意义,是做好一款产品的基础.原理图设计基本要求: 规范.清晰.准确.易读. 因此制定此< ...
- [FPGA] 1、开发板使用和引脚连接
目录 1.注意事项 2.设备简介 3.引脚分配 注意事项: ① 插拔下载线时必须断电! ② Quartus II 软件和 NIOS 软件的版本必须一致,并安装在同一个目录下面,安装目录不要有中文和空格 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(1)
介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务.另外,还有最新的数据库技术.最新 ...
- Macaca-iOS入门那些事
Macaca-iOS入门那些事 一. 前言 最近有朋友向我请教iOS自动化测试框架选型,刚好前段时间做讲座时发现了macaca,遂试用.所以,下面的内容会只围绕Macaca的iOS部分. 二. Mac ...