以前总觉得java类对象很简单,但是今天的一个同事的点播,让我对java的对象有了不一样的理解,下面我来介绍一下equals()和hashCode()的用法:

先粘一段代码:

public class TestAdd {

        public static void main(String[] args) {
User u1 = new User("aa","11"); User u2 = new User("aa","11");
Set<User> sets = new HashSet<User>();
sets.add(u1);
sets.add(u2); System.out.println(sets.size());
System.out.println(sets);
}
} class User{
String name;
String password;
User(String name,String password){
this.name=name;
this.password=password;
}
public String toString(){
return "Name :"+name+" "+"Password:"+password;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result
+ ((password == null) ? 0 : password.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
return true;
} }

equals()方法使用来判断其他对象和当前对象是否相等

hashCode()方法是给对象返回一个hashCode值

注:在set集合中,实现对象的去重方法,只需要在User对象中重载equals()和hashCode()函数,在set集合内部会自动是去重。

了解更多set内部去重的问题,请参考http://www.cnblogs.com/Qian123/p/5703507.html

最新文章

  1. python基础总结篇——使用Mysql
  2. php中利用正则去掉中文全角空格
  3. Microsoft Azure云计算第一步—试用帐户申请
  4. Slony-I中对storelisten出错的处理
  5. 结合rpyc使用python实现动态升级的方法
  6. hibernate_validator_07
  7. cocos2dx 利用CCOrbitCamera实现扑克牌翻牌效果
  8. ASP文件上传代码
  9. mybatis mapper.xml 写关联查询 运用 resultmap 结果集中 用 association 关联其他表 并且 用 association 的 select 查询值 报错 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis.map
  10. PyMySQL模块的使用
  11. bzoj3435 [Wc2014]紫荆花之恋
  12. CenOS_文件目录类操作命令
  13. 知识小罐头09(tomcat8启动源码分析 下)
  14. css table之合并单元格
  15. 用secureCRT操作ubuntu终端
  16. php + mysql 分布式事务
  17. ActiveMQ 概述
  18. 百度地图地址查询API使用
  19. 浏览器打印不出div背景颜色
  20. BZOJ2208:[JSOI2010]连通数——题解

热门文章

  1. IntelliJ IDEA 2016.1.4 git 切换分支详解
  2. [MongoDB] - Window7下安装及BSON基本介绍
  3. node文件中的package.json文件解析
  4. PHP基础学习(函数一)
  5. 从源码看集合ArrayList
  6. 无向图的完美消除序列 判断弦图 ZOJ 1015 Fish net
  7. git config全局配置
  8. 读书笔记 effective c++ Item 23 宁可使用非成员非友元函数函数也不使用成员函数
  9. HttpClient 工具
  10. C#实现分页组件