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

hashcode、equals、HashMap间的关系的更多相关文章

  1. JAVA基础4——谈谈HashCode与HashMap相关概念

    谈谈HashCode与HashMap HashCode hashCode,即一个Object的散列码. HashCode的作用: 对于List.数组等集合而言,HashCode用途不大: 对于Hash ...

  2. (考研)散列表和hashcode和hashmap

    package tt; import java.util.HashMap; import java.util.Map; public class a0 { public static void mai ...

  3. [ 转载 ]hashCode及HashMap中的hash()函数

    hashCode及HashMap中的hash()函数   一.hashcode是什么 要理解hashcode首先要理解hash表这个概念 1. 哈希表 hash表也称散列表(Hash table),是 ...

  4. 小例子(二)、winform窗体间的关系

    写一个关于winform窗体间的关系 1.登陆,思路:登陆后隐藏登陆窗体,关闭Form2时结束整个应用程序. //登陆窗体 private void button2_Click(object send ...

  5. Linux权限与命令间的关系

    极重要!权限与命令间的关系: 我们知道权限对於使用者帐号来说是非常重要的,因为他可以限制使用者能不能读取/创建/删除/修改文件或目录! 在这一章我们介绍了很多文件系统的管理命令,第六章则介绍了很多文件 ...

  6. 转载:2.1 运行中的Nginx进程间的关系《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19624.html 在正式提供服务的产品环境下,部署Nginx时都是使用一个master进程来管理多个worker进程,一般情况下,w ...

  7. UML类图与类间六种关系表示

    UML类图与类间六种关系表示 1.类与类图 类封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性,操作,关系的对象集合的总称. 类图是使用频率最高的UML图之一. 类图用于描述系统中所包含的 ...

  8. pg_hba.conf、pool_hba.conf 以及 pool_passwd 三者间的关系

    pg_hba.conf.pool_hba.conf 以及 pool_passwd 三者间的关系: 1.pg_hba.conf.pool_hba.conf 以及 pool_passwd 三者关系 pg_ ...

  9. 海思HI35XX之----视频处理单元各通道间的关系

    最近在折腾HI3518C的芯片,应用到IPCamera上,最终获取多路不同分辨率的视频流供不同需求的预览切换.此处简单记录一下视频前处理元VPSS(Video Process Sub-System)的 ...

随机推荐

  1. [2019徐州网络赛J题]Random Access Iterator

    题目链接 大致题意:从根节点出发,在节点x有son[x]次等概率进入儿子节点,求到达最深深度的概率.son[x]为x节点的儿子节点个数. 又又又又没做出来,心态崩了. 下来看了官方题解后发觉自己大体思 ...

  2. python中django中间件

    一.中间件 所谓的中间件,就是存在socket和视图函数中间的一种相当于过滤的机构. 中间件共分为: (1)process_request(self,request) (2)process_view( ...

  3. PythonDay06

    第六章 今日内容 小数据池 深浅拷贝 集合 小数据池 == is id == 判断两个值是否相等 is --- 是 判断两个值的内存地址是否相等 代码块:一个py文件,一个函数,一个模块,终端中每一行 ...

  4. 重写select

    select 模拟 目前仿写select的方式 给tableIndex 来使 div(无法获取焦点的元素)来获取元素,这样便可以在失去焦点时,是否将下拉框收回 通过 document的点击,来判断是否 ...

  5. Views的补充

    views的补充 请求头一般与请求内容用/r/n/r/n隔开 请求头包含的内容 request.Meta(...) 一般在下面几种方法里面取不到的东西需要去原生的头里面去取,比如用户的终端类型 req ...

  6. Zookeeper入门概要

    ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现.ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集 ...

  7. java中的数据类型,基本数据类型及其包装类型

    java中的8大基本类型及其包装类型 1,int--->Integer 2,byte--->Byte 3,short--->Short 4,long--->Long 5,cha ...

  8. kafka复习(2)

    一.简介 --------------------------------------- 1.kafka是一个分布式的.可分区的.可复制的消息系统.它提供了消息系统的功能,但是有自己独特的设计. 2. ...

  9. Aniamtion加载动画

    css新增样式Animation的运用 希望可以通过这个案例加深对Animation以及Transform 两大api的认识 效果图如下: 在这里需要注意的是:理应通过发送服务器请求来获取图片,从而达 ...

  10. DRF之三大认证

    一.用户认证Authorticatons 1.源码解析 第一步. 找入口 def dispatch(self, request, *args, **kwargs): # 1.首先我们进入的是APIVi ...