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

最新文章

  1. WLAN频段的选择
  2. css 文字与小图标对齐
  3. Python之 continue继续循环和多重循环
  4. Java编程性能优化
  5. Linux基本命令(8)网络操作的命令
  6. Swift对面向对象提供了良好的支持,下面介绍几个其独有的特性。
  7. SQL Server2008数据库导入导出兼容性处理
  8. NodeJs读取源代码使用的字符集
  9. [转] GDB attach
  10. 基于Linux 3.0.8 Samsung FIMC(S5PV210) 的摄像头驱动框架解读(一)
  11. ocp11g培训内部教材_051课堂笔记(047)_SQL
  12. t_sql语句得到表中所有信息
  13. Realm数据库的简单介绍和使用
  14. JavaScript 函数的定义-调用、注意事项
  15. MySQL 权限与用户表
  16. easyui datagrid属性和方法
  17. WPF Combobox数据绑定 Binding
  18. Android开发工程师文集-1 小时学会SQLite
  19. 了解一些dos常用命令
  20. 那些不明不白的$符号设计--Sass和Emmet,变量设计原理相通

热门文章

  1. Java Blocking Queue
  2. ADO.NET实体数据模型使用探索1
  3. 防止sql注入,过滤敏感关键字
  4. HDFS的联盟Federation
  5. openssh-server 安装
  6. UIBezierPath 画线
  7. c# 过滤字符串中的重复字符
  8. winston日志管理2
  9. sequelize翻译(1)
  10. popen&amp;pclose管道方式操作shell命令