Java之HashMap get方法
来源:互联网 发布:回收二手网络机柜 编辑:程序博客网 时间:2024/05/16 16:16
HashMap 非线程安全
通过下图可以看出HashMap的get方法的实现,其判断标准是通过hashCode和equals方法。
故可以通过重写类的hashCode和equals方法实现自定义Object的相等标准,完整代码如下
Book.java
package com.shc.map;public class Book {private String title;public Book(String title) {super();this.title = title;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}@Overridepublic int hashCode() {return title.hashCode();}@Overridepublic boolean equals(Object obj) {boolean flag = false;if(obj instanceof Book){Book book = (Book)obj;flag = this.title.equals(book.title);}return flag;}}
HashMapTest.java
package com.shc.map;import java.util.HashMap;import java.util.Map;import org.junit.Test;public class HashMapTest {@Testpublic void testHashMap1(){Map map = new HashMap();String sss = "aaa";String yyy = "bbb";Book aaa = new Book(sss);Book bbb = new Book(yyy);map.put(aaa, "aaaaaaaaaaaaaaaaaa");map.put(bbb, "bbbbbbbbbbbbbbbbbb");Object content = map.get(aaa);//输出aaaaaaaaaaaaaaaaaaSystem.out.println(content);//改变对象的属性,其hashCode不变,对象内存地址不变aaa.setTitle("xwegwear");content = map.get(aaa);//输出aaaaaaaaaaaaaaaaaaSystem.out.println(content);//hashCode不同Book ccc = new Book(yyy);content = map.get(ccc);//输出nullSystem.out.println(content);}/** * 重写了book的hashCode和equals方法之后 */@Testpublic void testHashMap2(){Map map = new HashMap();String sss = "aaa";String yyy = "bbb";Book aaa = new Book(sss);Book bbb = new Book(yyy);map.put(aaa, "aaaaaaaaaaaaaaaaaa");map.put(bbb, "bbbbbbbbbbbbbbbbbb");Object content = map.get(aaa);//输出aaaaaaaaaaaaaaaaaaSystem.out.println(content);//改变对象的属性aaa.setTitle("xwegwear");//map.get时,获取到的aaa的hashCode已经改变,已经取不到aaacontent = map.get(aaa);//输出nullSystem.out.println(content);//hashCode相同Book ccc = new Book(yyy);content = map.get(ccc);//输出bbbbbbbbbbbbbbbbbbSystem.out.println(content);//字符串"bbb" 和 变量yyy 的hashCode相同Book ttt = new Book("bbb");content = map.get(ttt);//输出bbbbbbbbbbbbbbbbbbSystem.out.println(content);}}
- Java之HashMap get方法
- HashMap.put/get方法
- HashMap源码注解 之 get()方法(五)
- Java HashMap的数据结构以及put和get方法
- HashMap学习笔记:get方法
- HashMap中的get方法注意事项
- Java之HashMap类实用方法大全
- 【Java语言学习】之HashMap遍历方法
- HashMap中get(Object key)方法实现
- hashmap陷入get方法陷入死循环
- HashMap的put和get方法原理
- HashMap源码解析——get方法
- HashMap源码--(四)get方法
- hashMap底层put和get方法逻辑
- HashMap的get方法为空解读
- HashMap的put,get方法实现!
- JDK源码之解读hashMap 的put和get方法的实现原理
- 从头认识java-15.7 Map(3)-介绍HashMap的工作原理-get方法
- JavaScript中接收php变量-菜鸟学Ajax知识点
- 类中的静态变量和函数
- 一个PDF格式下载的网站 技术及生活百科很全的一个网站
- 游戏服务器中的数据库异步操作技术和游戏数据的保存机制
- Android + eclipse +ADT安装完全教程
- Java之HashMap get方法
- 揭秘中国16大暴利行业
- 深刻理解Python中的元类(metaclass)
- eclipse js报错
- DDOS 攻击学习笔记
- 学习链接
- 电池电量转换参考
- ios坐标系转换
- 精通CSS+DIV基础总结(二)