`
ponlya
  • 浏览: 164327 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Equals与hasCode

阅读更多

关于重写Equals方法
equals用来按照自己的规则判断两个对象是否相等,而重写了equals后,按照java的惯例,就需要重写hashCode。如果没有重写equals方法,则二个对象比较的是地址。

DEMO:

User.java

public class User {
	private Integer id;

	public User() {
		super();
	}

	public User(Integer id) {
		super();
		this.id = id;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
}

测试:

@Test
	public void testNoEquals(){
		User user1  = new User(1);
		User user2  = new User(1);
		//如果没有重写,默认equals是比较地址
		System.out.println(user1.equals(user2));//不相等
		
	}

 结果为false,因为比较的是结果。

在User对象中再添加Equals方法(参考myeclipse通过hibernate revenge生成的po类中写法):

	public boolean equals(Object other) {
		if (this == other)
			return true;
		if (other == null)
			return false;
		if (!(other instanceof User))
			return false;
		User user = (User) other;
		return (user.getId().equals(this.getId()));

	}
	public int hashCode() {
		int result = 17;

		result = 37
				* result
				+ (getId() == null ? 0 : this.getId()
						.hashCode());
		
		return result;
	}

 如此则上面测试结果为true.

hibernate中重写equals方法原因是,避免set保存对象中把相同的对象又进行持久化。

 

 

分享到:
评论

相关推荐

    java 资料 equals 与== 的区别

    Java 中的equals和==的区别 Java 是一种面向对象的编程语言,其中有两种数据类型:基本数据类型和引用数据类型。基本数据类型包括整数类型、浮点数类型、字符类型、布尔类型等,共有八种;而引用数据类型则包括 ...

    equals与==之间的区别

    在Java编程语言中,`equals`方法与`==`操作符是进行对象比较时最常用的两种方式,但它们之间存在着显著的区别。理解这些差异对于正确地处理对象比较至关重要。 ### `==` 操作符 `==`操作符主要用于比较两个基本...

    java中equals和==的区别

    Java 中 equals 和 == 的区别 Java 中的 equals 和 == 是两个不同的概念,很多开发者容易混淆它们。理解这两个概念的区别是非常重要的,因为它们对编程的正确性和性能都有很大的影响。 首先,我们需要了解 Java ...

    java中hashcode()和equals()方法详解

    ### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...

    equals与hashCode在实际开发中的重写写法

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是两个非常重要的成员,尤其是在处理对象比较和集合操作时。这两个方法通常与`Object`类中的默认实现相关联,但为了在实际开发中实现正确的对象比较和哈希表操作...

    equals(Object) 与 == 的区别

    "equals(Object) 与 == 的区别" .equals(Object) 与 == 的区别是 Java 编程语言中一个常见的问题,许多初学者都感到困惑。下面我们将详细地解释这两个概念之间的区别。 首先,让我们看一个例子。假设我们有两个 ...

    equals与hashCode方法讲解

    equals 与 hashCode 方法讲解 equals 方法和 hashCode 方法是 Java 语言中两个重要的方法,它们都是在 Object 类中定义的。equals 方法用于比较两个对象是否相等,而 hashCode 方法用于返回对象的哈希码。 在 Java...

    【Java面试题】equals与==的区别

    【Java面试题】equals与==的区别

    重写equals方法

    "equals 方法重写详解" 在 Java 中,equals 方法是一个非常重要的方法,它用于判断两个对象是否相等,而不是判断两个对象的引用是否相同。在 Object 基类中,equals 方法的实现是使用“==”操作符来比较对象的引用...

    Java基础复习(内附String中equals与==区别的分析)

    字符串的intern()方法也值得讨论,它会返回常量池中与当前字符串相等的字符串,如果常量池中不存在,则将当前字符串放入常量池并返回引用。这可能导致`==`和`equals()`产生相同的结果: ```java String str1 = new ...

    winform 重写Equals源码

    2. **类型检查**:在`Equals`方法内部,首先检查传入的对象是否与当前对象是同一种类型。如果不是,可以直接返回`false`,因为不同类型的对象不可能相等。 ```csharp if (obj == null || GetType() != obj.GetType...

    java中equals()函数的用法 equals和==的区别

    而`equals()`方法是Object类中的一个成员方法,它的默认行为也是比较两个对象的引用是否相等,与`==`一致。但是,很多类(如String、Integer等)都重写了`equals()`方法,以便进行更深层次的内容比较。例如,String...

    ==和equals的区别

    Java 中的 equals 方法是一个比较对象内容的方法,其声明格式是 public boolean equals(Object obj),比较规则为:当参数 obj 引用的对象与当前对象为同一个对象时,就返回 true,否则返回 false。例如: ```java ...

    ==与equals的比较

    "Java中的==和equals方法比较" 在Java中,`==`和`equals`是两种不同的比较方法,前者比较引用地址,而后者比较对象的实际内容。 首先,让我们来看看`==`运算符的用法。`==`运算符可以用来比较基本数据类型和引用...

    equals问题经典

    这里我们将深入探讨`equals()`方法的用法,以及它与`==`的区别,同时解决题目中提出的问题。 **问题一:** 在Java中,`String`类的实例有两种创建方式。一种是直接通过字面量,如`String s1 = "abc";`,这时字符串...

    hashcode和equals方法

    equals()和hashcode()这两个方法都是从object类中继承过来的。当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法.

    equals方法的重写.docx

    - `stu2`与`stu0`的属性值不同,因此`stu2.equals(stu0)`返回`false`。 通过这种方式,`equals`方法的正确性得到了验证。 #### 四、注意事项 1. **`equals`方法和`hashCode`方法应保持一致性**:如果两个对象根据...

    Java语言深入_equals

    《Java语言深入_Equals》 Java中的`equals`方法是一个至关重要的方法,用于比较两个对象是否“相等”。在Java API规范中,`equals`方法必须遵循以下五个基本原则: 1. 对于任何引用类型,`o.equals(o)`总是返回`...

    java_equals用法

    java_equals用法,用来熟悉重写equals方法的

    Java中equals方法隐藏的陷阱

    - **与`null`的关系**:对于任何非空引用值x,`x.equals(null)`应该返回`false`。 **示例代码**: ```java public boolean equals(Object obj) { if (this == obj) { // 自反性 return true; } if (obj == null...

Global site tag (gtag.js) - Google Analytics