Map_占位符(嗨没想好怎么起名字)
Map 是很好的集合,为我们带来了在其他语言(比如 Perl)中经常可见的好用的键/值对集合。JDK 以 HashMap 的形式为我们提供了方便的 Map 实现,它在内部使用哈希表实现了对键的对应值的快速查找。但是这里也有一个小问题:支持哈希码的键依赖于可变字段的内容,这样容易产生 bug,需要我们注意。
如果我们有个Person对象,并且重写了HashCode方法,那么当我们把这个对象当作HashMap的键来存储内容时,可能就会遇到问题;
package cn.rocker.map; /**
* @author rocker
* @version V1.0
* @Description: 重写了HashCode方法的Person对象
* @date 2018/5/5 10:11
*/
public class Person { private String firstName;
private String lastName;
private int age; public Person() {
} public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
} @Override
public String toString() {
return "Person{" +
"firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", age=" + age +
'}';
} @Override
public int hashCode() {
return firstName.hashCode() & lastName.hashCode() & age;
} public String getFirstName() {
return firstName;
} public void setFirstName(String firstName) {
this.firstName = firstName;
} public String getLastName() {
return lastName;
} public void setLastName(String lastName) {
this.lastName = lastName;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
用HashMap来操作该Person对象
package cn.rocker.map; import java.util.HashMap; /**
* @author rocker
* @version V1.0
* @Description:
* @date 2018/5/5 9:55
*/
public class mapDemo1 { /**
* @Description: 永远不要将可变对象类型用作 HashMap 中的键!!!
* @auther: rocker
* @date: 2018/5/5 10:10
*/
public static void main(String[] args) {
Person p1 = new Person("rocker","melon",20);
Person p2 = new Person("williams","apple",40);
System.out.println(p1.hashCode()); //16
HashMap<Person, Person> pMap = new HashMap<>();
pMap.put(p1,p2);
p1.setFirstName("franklin");
p1.setLastName("hahahaha");
System.out.println(p1.hashCode()); //4
System.out.println(pMap.get(p1)); //null
} }
当我们改变p1对象的firstName和lastName时,p1的hashcode就从16变为了4,我们去hashmap中根据这个4去get时,就获取不到对应的value了

Map_占位符(嗨没想好怎么起名字)的更多相关文章
- dubbo注册中心占位符无法解析问题
		
dubbo注册中心占位符无法解析问题 1.背景 最近搞了2个老项目,想把他们融合到一起.这俩项目情况简介如下: 项目一:基于SpringMVC + dubbo,配置读取本地properties文件,少 ...
 - sass04 嵌套、继承、占位符
		
demo1.scss body{ //选择器嵌套 background-color:lightgray; header{ background-color:lightgreen; } footer{ ...
 - Android 图片加载库Glide 实战(二),占位符,缓存,转换自签名高级实战
		
http://blog.csdn.net/sk719887916/article/details/40073747 请尊重原创 : skay <Android 图片加载库Glide 实战(一), ...
 - c++11模拟boost元占位符placeholder
		
准备实现meta programming的fold函数,发现自己缺少占位符实现,这样传入fold的transform op类(元函数)都不得不另外写个外覆类,其实我觉得没啥不好,简单直接,说实话干扰什 ...
 - Spring Cloud Finchley.SR1 版本的坑:placeholer占位符无法解析!
		
接入nacos 之后,想把所有的配置丢上去. 启动程序是: @EnableDiscoveryClient @RestController @ComponentScan(basePackages = { ...
 - 占位符,SQL注入?
		
这两天在上课时被同学拿了一段代码问我,这段代码有什么问题,我看了一会说:Connection和PreparedStatement都没关.他说不止这方面的问题,还有sql注入的问题,我就坚决的说使用了占 ...
 - .NET 基础 一步步 一幕幕[运算符、占位符、转义符]
		
运算符.占位符.转义符 好吧,在五局全胜之后,终于升到了三个钻,距离一个星星还有一大段距离,忽然想起来今天的博客还没写,果断坑队友,来写博客了....感觉以后还是每天更新一篇比较好.要不晚上就该熬 ...
 - SPRING多个占位符配置文件解析源码研究--转
		
原文地址:http://www.cnphp6.com/archives/85639 Spring配置文件: <context:property-placeholder location=&quo ...
 - 【SpringMVC】SpringMVC系列3之@PathVariable映射URL占位符参数
		
3.@PathVariable映射URL占位符参数 3.1.概述 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义. ...
 
随机推荐
- 【C/C++】实现龙贝格算法
			
1. 复化梯形法公式以及递推化 复化梯形法是一种有效改善求积公式精度的方法.将[a,b]区间n等分,步长h = (b-a)/n,分点xk = a + kh.复化求积公式就是将这n等分的每一个小区间进行 ...
 - 【题解】K乘积
			
题目描述 有N个数,每个数的范围是[-50,50],现在你要从这N个数中选出K个,使得这K个数的乘积最大. 输入格式 第一行,N和K. 1 <= N <= 50. 1 <= K & ...
 - UNIX口令破解机
			
在编写我们的UNIX口令破解机时,我们需要使用UNIX 计算口令hash 的crypt()算法.Python 标准库中已自带有crypt 库.要计算一个加密的UNIX 口令hash,只需调用函数cry ...
 - thymeleaf中js跳转到另外一个页面
			
<script type="text/javascript"> setTimeout("location.href='index'", 3000); ...
 - Kindle支持文档类型
			
Kindle支持文档类型 Kindle个人文档服务目前只能转换并发送以下类型的文档:Microsoft Word (.doc, .docx) RTF文件(.rtf) HTML(.htm, .html) ...
 - EMM386和UMBPCI 区别
			
EMM386和UMBPCI 区别 1,SupportCD-ROM[HIMEM+EMM386NOEMS].支持光驱(EMM386模式)2,SupportCD-ROM[HIMEM+UMBPCI].支持光驱 ...
 - MT【255】伸缩变换
			
(2012新课标9)已知$\omega>0,$函数$f(x)=sin(\omega x+\dfrac{\pi}{4})$在$(\dfrac{\pi}{2},\pi)$上单调递减,则$\omega ...
 - 故障排错-ping dup!
			
ping DUP! ping一个vc中虚拟机的地址发现如下,出现了DUP! . 解决方式如下: 1.根据mac地址找到虚拟机网卡的端口组 然后编辑绑定和故障切换,切换负责平衡
 - [模板] Manacher(马拉车)算法
			
用途 求回文子串 做法 先考虑回文子串以某字符为中心的情况,即长度为奇数 推着做,记rad[i]为以i位置为中心的最大半径(包含中点) 考虑怎么求rad[i].找之前的一个右端点最靠右的位置p,设它的 ...
 - Nginx反向代理后端多节点下故障节点的排除思路
			
仔细想来,其实是个非常简单的问题:开发和运维觉得两个后端节点跑起来压力太大了,就扩充了两个新的后端节点上去,这一加就出问题了,访问时页面间歇性丢失,这尼玛什么情况...想了半天没思路,查了Nginx的 ...