java中hashCode()方法的作用
hashcode方法返回该对象的哈希码值。
hashCode()方法可以用来来提高Map里面的搜索效率的,Map会根据不同的hashCode()来放在不同的位置,Map在搜索一个对象的时候先通过hashCode()找到相应的位置,然后再根据equals()方法判断这个位置上的对象与当前要插入的对象是不是同一个。
所以,Java对于eqauls方法和hashCode方法是这样规定的:
*如果两个对象相同,那么它们的hashCode值一定要相同;
*如果两个对象的hashCode相同,它们并不一定相同。
如下代码:
package demos; import java.util.HashSet;
import java.util.Set; /**
* Created by hu on 2016/3/26.
*/
public class Student {
private String name;
private Integer age;
public Student(String name, Integer age) {
this.name = name;
this.age = age;
} public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String toString() {
return name + "'s age is " + String.valueOf(age);
} public boolean equals(Object other) {
if(this == other)
return true;
if(other == null)
return false;
if(!(other instanceof Student))
return false; final Student stu = (Student)other;
if(!getName().equals(stu.getName()))
return false;
if(!getAge().equals(stu.getAge()))
return false;
return true;
} public int hashCode() {
int result = getName().hashCode();
result = 29*result + getAge().hashCode();
return result;
} public static void main(String[] args){
Set<Student> set = new HashSet<Student>();
Student s1 = new Student("ZhangSan", 13);
Student s2 = new Student("ZhangSan", 13);
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
set.add(s1);
set.add(s2);
System.out.println(set);
System.out.println(s1.equals(s2));
}
}
java中hashCode()方法的作用的更多相关文章
- 自己(转)JAVA中toString方法的作用
JAVA中toString方法的作用 因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.print ...
- Java中hashCode()方法以及HashMap()中hash()方法
Java的Object类中有一个hashCode()方法: public final native Class<?> getClass(); public native int hashC ...
- java中hashCode方法与equals方法的用法总结
首先,想要明白hashCode的作用,必须要先知道Java中的集合. 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set. 前者集合内的元素是有序的,元素可以重 ...
- 对Java中HashCode方法的深入思考
前言 最近在学习 Go 语言,Go 语言中有指针对象,一个指针变量指向了一个值的内存地址.学习过 C 语言的猿友应该都知道指针的概念.Go 语言语法与 C 相近,可以说是类 C 的编程语言,所以 Go ...
- Java中finalize()方法的作用
finalize方法是Object提供的的实例方法,使用规则如下: 当对象不再被任何对象引用时,GC会调用该对象的finalize()方法 finalize()是Object的方法,子类可以覆盖这个方 ...
- JAVA中toString方法的作用
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不 ...
- JAVA中toString方法的作用(转)
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不 ...
- Java中hashCode方法的理解以及此小结的总结练习(代码)
笔记: “散列码”就是用来把一堆对象散到各自的队列里去的一种标识码. 举个形象一点的例子,一年有 365 天,从 1 编号到 365,下面我定义一种编码方法,每个人按照他生日那天的编号作为他的标识码, ...
- java中 flush()方法的作用
flush() 是清空,而不是刷新啊.一般主要用在IO中,即清空缓冲区数据,就是说你用读写流的时候,其实数据是先被读到了内存中,然后用数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还 ...
随机推荐
- PIC12F629帮我用C语言写个程序,控制三个LED亮灭
http://power.baidu.com/question/240873584599025684.html?entry=browse_difficult PIC12F629帮我用C语言写个程序,控 ...
- Asp.Net MVC Control向View传值
1.通过View(Parameter)参数传值 Control: namespace MyMVCDemo.Controllers { public class PersonControlle ...
- jQuery对象与JS原生dom对象之间的转换
jQuery就是JS的一个扩展库,工具库,提供很多方便快捷的方法,所以将JS对象转换为jQuery对象后,能更方便地操作这个对象.但是jQuery对象也不是万能的,有一些JS对象有的能,jQuery对 ...
- 【Android测试】【第十四节】Appium——简述
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5124340.html 前言 同样的,这一篇我要介绍的也是一 ...
- 是什么在.NET程序关闭时阻碍进程的退出?
在平时使用软件或是.NET程序开发的过程中,我们有时会遇到程序关闭后但进程却没有退出的情况,这往往预示着代码中有问题存在,不能正确的在程序退出时停止代码执行和销毁资源.这个现象有时并不容易被察觉,但在 ...
- 创建podSpec,使用pod管理第三方库
提要: podfile文件会先读取.podspec文件,根据.podspec文件的指向来下载第三方库到项目中. 本文先通过一.二.三项,这三个步骤讲解了如何建立一个.podspec文件在本地.coco ...
- placeholder兼容
<!------------placeholder兼容-------------><script type="text/javascript"> $( ...
- 测试环境下将centos6.8升级到centos7的操作记录(转)
在测试环境下安装openstack,由于在centos6下安装openstack,针对源的问题有很多,安装起来很不顺利! 但是在centos7下安装却很顺利,所以考虑将服务器由centos6升级到ce ...
- 微信公开课PRO版张小龙演讲全文
今天,微信当家人张小龙通过微信官方账户发布了一则视频,视频中张小龙阐述了微信对于开放平台的一些理念和方向.张小龙用八点概括.以下是张小龙发言: 各位参加微信公开课的朋友们,大家好. 首先很遗憾这一次不 ...
- Java代码中执行Linux命令,亲测可用
前提需要知道怎么在linux怎么新建java文件和怎么编译,否则请先学其他知识!! import java.io.*;public class Test{ public static void mai ...