1、从Object说起
package com.hallo.collection;

public class ObjectDemo {

public static void main(String[] args) {

Object o1 = new Object();
Object o2 = new Object();

//同一Object对象,hashCode永远相同
assert(o1.hashCode() == o1.hashCode());
//不同Object对象,hashCode永远不相同
assert(o1.hashCode() != o2.hashCode());

//不同对象equals返回false
assert(!o1.equals(o2));

System.out.println("end");

}
}
输出:end

2、String类Demo
package com.hallo.collection;

public class StringDemo {

public static void main(String[] args) {

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

//不同string对象(==不成立)保存相同字符串时,hashCode和equals返回相同
assert(str1.hashCode() == str2.hashCode());
assert(str1.equals(str2));
assert(str2.hashCode() == str3.hashCode());
assert(str2.equals(str3));

System.out.println("end");
}
}
输出:end

3、自定义类,重写hashcode、equals方法
package com.hallo.collection;

import java.util.HashMap;
import java.util.Map;

public class MyObject {

private String name;

public String getName() {
return name;
}

public MyObject(String name) {
this.name = name;
}

@Override
public int hashCode() {
//使用object类的方法
return super.hashCode();
}

@Override
public boolean equals(Object obj) {

if(this == obj)
return true;

if(obj instanceof MyObject) {
return ((MyObject) obj).getName(http://www.amjmh.com).equals(this.getName());
}

return false;
}

public static void main(String[] args) {

MyObject o1 = new MyObject("k1");
MyObject o2 = new MyObject("k1");
MyObject o3 = new MyObject("k3");

Map<MyObject, String> myObjectMap = new HashMap<MyObject, String>();
myObjectMap.put(o1, "o1");
myObjectMap.put(o1, "o11");
myObjectMap.put(o2, "o2");
myObjectMap.put(o3, "o3");

System.out.println(myObjectMap);
}

}
输出:

{com.hallo.collection.MyObject@7852e922=o11,

com.hallo.collection.MyObject@70dea4e=o3,

com.hallo.collection.MyObject@4e25154f=o2}
---------------------

最新文章

  1. JavaScript 随笔1
  2. Java 经典实例: Unicode字符和String之间的转换
  3. NopCommerce中的单例
  4. 关于Socket建立长连接遇到的bug信息
  5. SAE Java相关问题小结
  6. 关于ADMM的研究(一)
  7. 洛谷 P1026 统计单词个数
  8. WebService学习总结
  9. Qt用Zip压缩文件夹的一些坑
  10. 三种ajax上传文件方法
  11. ImCash:币圈英文术语大全
  12. Java开发知识之Java控制语句
  13. luogu P2327 [SCOI2005]扫雷
  14. Appium介绍及工作原理
  15. TSP-UK49687
  16. MATLAB 移动复制文件
  17. ffmpeg h264+ts +(sdl)显示方式
  18. CountDownLatch 使用(模拟一场比赛)
  19. CCF 201312-4 有趣的数[dp][难]
  20. Ubuntu 安装配置 JDK+Tomcat+Nginx

热门文章

  1. java 异常体系详细介绍
  2. Luogu P5444 [APIO2019]奇怪装置
  3. 洛谷 P5662 纪念品 &amp; [NOIP2019普及组] (dp,完全背包)
  4. oracle管理基础知识
  5. Python 如何用列表实现栈和队列?
  6. P2P技术
  7. 毛玻璃效果 css
  8. OC(构造函数,分类等知识总结)
  9. php设置错误级别
  10. linux下解压缩.tar.bz2到某目录下