Java hashCode&&equals
/**
为保证向Set中添加的对象其所在的类必须要重写hashCode和equals方法:
重写的原则:hashCode和equals尽量保持一致性:
两个相同的对象equals()返回true时,那么两个对象的hashCode()必须返回相同的哈希值
同一对象多次调用hashCode()应返回相同的哈希值
对象中用作equals()的域,一般也要在hashCode()中用到。
*/
public class HashCodeAndEquals {
public static void main(String[] args) {
}
}
public class Person {
int age;
String name;
public Person() {
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
if (age != person.age) return false;
return name != null ? name.equals(person.name) : person.name == null;
}
@Override
//IDEA重写hashCode()方法,用31原因:
//31是较大的素数,减少冲突
//31只有5bits,防止溢出
//i*31=i<<5-1 许多虚拟机里都有优化,提高效率
public int hashCode() {
int result = age;
result = 31 * result + (name != null ? name.hashCode() : 0);
return result;
}
}
Java hashCode&&equals的更多相关文章
- Java hashCode() equals()总结
1.hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的: 2.如果两个对象相同,就是适用于equals(j ...
- Java hashCode(), equals()
转自:http://blog.csdn.net/fenglibing/article/details/8905007冯立彬的博客 以下是关于HashCode的官方文档定义: hashcode方法返回该 ...
- Java hashCode() 和 equals()的若干问题
原文:http://www.cnblogs.com/skywang12345/p/3324958.html 本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() ...
- Java hashCode() 和 equals()的若干问题解答
本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么? 3 hashCode() 的作用是什么? 4 hashCode() 和 equa ...
- JAVA - hashcode与equals作用、关系
Hashcode的作用 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set.前者集合内的元素是有序的,元素可以重复:后者元素无序,但元素不可重复. ...
- Java hashCode() 和 equals()的若干问题解答<转载自skywang12345>
第1部分 equals() 的作用equals()的作用是用来判断两个对象是否相等.equals()定义在JDK的Object类中.通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否 ...
- Java:重写equals()和hashCode()
Java:重写equals()和hashCode() 1.何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念). 2.设计equals() [1]使用instan ...
- Java 重写 equals 与 hashCode 的注意事项
为什么重写 equals 的时候必须重写 hashCode 大家可能从很多教程中了解到: SUN官方的文档中规定"如果重定义equals方法,就必须重定义hashCode方法,以便用户可以将 ...
- java中equals和hashCode方法随笔二
前几天看了篇关于java中equals和hashCode方法的解析 1.Object类中的equals方法和hashCode方法. Object类中的equals和hashCode方法简单明了,所有的 ...
随机推荐
- sed -n "29496,29516p" service.log:从29496行开始检索,到29516行结束
在工作中常用的Linux命令 javalinux 发布于 2019-07-24 约 11 分钟 前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://gith ...
- 使用shell+python脚本实现系统监控并发送邮件
1.编辑shell脚本 [root@web03 ~/monitor_scripts]# cat inspect.sh #!/bin/bash # 设置磁盘的阀值 disk_max=90 # 设置监控i ...
- DOCKER学习_013:Dockerfile配置指令ENTRYPOINT详解
前面已经介绍了一些Dockerfile的一些指令,对于ENTRYPOINT和CMD也有介绍实验 一 ENTRYPOINT和CMD配置使用 ENTRYPOINT相当于CMD,是配置容器后的一个指令,但是 ...
- Python应用与实践-转自(吴秦(Tyler))
1. Python是什么? 1.1. Python语言 1.2. Python哲学 2. Python在工作中的应用 2.1. 实例1:文件批量处理 ...
- openssl自签发证书
DOMAIN=www.example.com openssl genrsa -out ${DOMAIN}.key # 生成私有key openssl req -x509 -new -nodes -ke ...
- PHP实现简单的socket与异步应用
1.socket应用 (1)简单概念 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本质是编 ...
- systemverilog数组类型
- 如何写新的C++ OP
如何写新的C++ OP 概念简介 简单介绍需要用到基类,详细介绍请参考设计文档. framework::OperatorBase: Operator(简写,Op)基类. framework::OpKe ...
- TensorRT 数据和表格示例
TensorRT 数据和表格示例 TensorRT 7.1在绑定索引方面比其前身更加严格.以前,允许错误配置文件的绑定索引.考虑一个网络,该网络具有四个输入,一个输出,以及在其中的三个优化配置文件 I ...
- 深度学习加速器堆栈Deep Learning Accelerator Stack
深度学习加速器堆栈Deep Learning Accelerator Stack 通用张量加速器(VTA)是一种开放的.通用的.可定制的深度学习加速器,具有完整的基于TVM的编译器堆栈.设计了VTA来 ...