1,一般我们自己用时,只使用equals()方法,用于判断两个对象是否是业务上等价的。
2,在重写equals()方法时,强烈推荐也要重写hashCode()方法,因为有的集合用到了hashCode()来提高效率。
equals为true的对象的hashCode值一定要一样。
equals为false的对象的hashCode值尽量不一样。
3,可以使用工具自动生成hashCode()与euqals()方法。

 package com.zsy.study;

 public class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public User(){}
public User(Integer id) {
super();
this.id = id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }

测试代码

 public class TestEquals {

     @Test
public void test() throws Exception {
Set<User> set = new HashSet<User>(); // User user = new User(1);
// set.add(user);
// set.add(user); set.add(new User(1));
set.add(new User(1));
set.add(new User(1)); System.out.println(set.size());
} @Test
public void test2() throws Exception {
System.out.println("aa" == "aa"); // true
System.out.println(new String("aa") == new String("aa")); // false
System.out.println("aa" == new String("aa")); // false System.out.println("aa".equals(new String("aa"))); // true
} @Test
public void test3() throws Exception {
Set<User> set = new HashSet<User>(); User user = new User(); // id = 0
set.add(user); // session.save(user); // id = 5
user.setId(5);
set.add(user); // user.hashCode() == eltOldhashCode; // set.add(user);
System.out.println(set.size());
}
}

需导入junit.jar 测试类

hashCode()方法与equals()方法的说明的更多相关文章

  1. 为什么要重写hashCode()方法和equals()方法及如何重写

    我想写的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法 2.在什么情况下需要重写hashCode()方法和equals()方法 3.如何重写这两个方法 **** ...

  2. java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重

    package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*训练知识点:HashSet 训练描述 双色 ...

  3. hashCode()方法和equals方法的重要性。

    在Object中有两个重要的方法:hashCode()和equals(Object obj)方法,并且当你按ctrl+alt+s时会有Generator hashCode()和equals().我们不 ...

  4. JavaSE-28 hashCode()方法、equals()方法和==相关概念

    概述 Java中,Object类是所有类的基类:如果一个类没有明确继承其他已定义的类,则默认继承Object类. Object类提供了以下方法,对于其他方法,请参考前期专题描述. hashCode() ...

  5. 浅谈Java中的hashcode方法以及equals方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个 ...

  6. java中hashCode方法与equals方法的用法总结

    首先,想要明白hashCode的作用,必须要先知道Java中的集合. 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set. 前者集合内的元素是有序的,元素可以重 ...

  7. Java 重写hashCode 方法和equals方法

    package Container; import java.util.HashSet; import java.util.Iterator; /* Set 元素是无序的(存入和取出的顺序不一定一致) ...

  8. hashCode方法和equals方法比较

    为什么用HashCode比较比用equals方法比较要快呢?我们要想比较hashCode与equals的性能,得先了解HashCode是什么. HashCode HashCode是jdk根据对象的地址 ...

  9. hashCode()方法与equals()方法

    摘自别人的评论:http://blog.csdn.net/fhm727/article/details/5221792 当向集合Set中增加对象时,首先集合计算要增加对象的hashCode码,根据该值 ...

随机推荐

  1. 【Android】Android连接SQLite3数据库的操作

    在前面使用SQLite3的时候,并没有留意到有SQLiteOpenHelper这个类,所以只好在Activity里面去创建和维护数据库跟数据表的创建. 但是,现在有了SQLiteOpenHelper这 ...

  2. 【java】详解I/O流

    目录结构: contents structure [+] File类 I/O流体系 流的基本介绍 访问文件 转化流 DataInputStream和DataOutputStream 对象流 推回输入流 ...

  3. 【java】break outer,continue outer的使用

    break默认是结束当前循环,有时我们在使用循环时,想通过内层循环里的语句直接跳出外层循环,java提供了使用break直接跳出外层循环,此时需要在break后通过标签指定外层循环.java中的标签是 ...

  4. iOS 11和xcode9

    最近发现了比较奇怪的问题,就是 ios10.几以前的版本,用xcode9 编写的程序   如果程序写的table是  plain的  ,那么  在  ios10.几及以下版本都会显示成group样式, ...

  5. 基于matplotlib的数据可视化 - 柱状图bar

    柱状图bar 柱状图常用表现形式为: plt.bar(水平坐标数组,高度数组,宽度比例,ec=勾边色,c=填充色,label=图例标签) 注:当高度值为负数时,柱形向下 1 语法 bar(*args, ...

  6. js 数组的深度递归搜索

  7. Vue 中组件概念

    1 为了能在模板中使用,组件必须先注册以便 Vue 能够识别.这里有两种组件的注册类型:全局注册和局部注册. 1.1 全局注册是通过Vue.component 来向Vue注册,例子 Vue.compo ...

  8. mysql数据库1129错误

    错误:Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 原因: 同一个i ...

  9. iphone5 jail break

    dfu恢复恢复备份越狱afc2add删除2个文件,如果只有1个也没问题/var/mobile/Library/Caches/com.apple.mobile.installation.plist/va ...

  10. quartz + spring 配置示例

    <!-- 配置job定时任务类 --> <bean id="triggerCalculateLecturerProfitJob" class="com. ...