对Equals()方法的重写

//手动的实现equals()方法
//    重写Object类的equals(Object obj)方法,保证两个对象若属性值完全相等,则返回true
    public boolean equals(Object obj){
        if(this==obj){
            return true;
        }else if(obj instanceof Person){
            Person p=(Person)obj;
            return this.getId()==p.getId()&&this.getAge()==p.getAge()&&this.getName().equals(p.getName());
        }else 
            return false;
    }
    @Override
   public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
           return false;
        }
        if (!(obj instanceof Person)) {
            return false;
        }
       Person other = (Person) obj;
        if (age != other.age) {
            return false;
        }
        if (id != other.id) {
            return false;
        }
        if (name == null) {
            if (other.name != null) {
                return false;
            }
        } else if (!name.equals(other.name)) {
            return false;
        }
       return true;
    }

String类中对Equals()的重写为:

  public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

对Equals()方法的重写

时间: 2024-10-06 00:13:01

对Equals()方法的重写的相关文章

equals方法的重写

一.为什么equals()方法要重写? 判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象.这样我们往往需要重写equals()方法. 我们向一个没有重复对象的集合中添加元素时,集合中存放的往往是对象,我们需要先判断集合中是否存在已知对象,这样就必须重写equals方法. 二.怎样重写equals()方法? 重写equals方法的要求:1.自反性:对于任何非空引用x,x.equals(x)应该返回

为什么重写equals方法还要重写hashcode方法?

我们都知道Java语言是完全面向对象的,在java中,所有的对象都是继承于Object类.Ojbect类中有两个方法equals.hashCode,这两个方法都是用来比较两个对象是否相等的. 在未重写equals方法我们是继承了object的equals方法,那里的 equals是比较两个对象的内存地址,显然我们new了2个对象内存地址肯定不一样 对于值对象,==比较的是两个对象的值 对于引用对象,比较的是两个对象的地址 默认的equals方法同==,一般来说我们的对象都是引用对象,要重写equ

equals方法的重写代码实例

这篇文章主要是要记录一下equals的重写,下面上代码,代码里有足够的注释 /**  *   */ /**  * @author laishengfeng  * @2014-8-20  * @TODO equals方法的重写  */ public class Citizen { String id; // 身份证号 String name; // 名字 int age; // 年龄 String sex; // 性别 // 用构造方法对成员变量进行初始化 public Citizen(Strin

为什么系列之重写equals方法必须重写hasCode方法?

Object源代码及注释 equals是Object的公有方法,那么我们通常都会在自己的类中重写这个equals方法,同时必须重写hasCode方法,知道为什么重写equals方法必须重写hasCode方法呢? /** * Returns a hash code value for the object. This method is * supported for the benefit of hash tables such as those provided by * {@link jav

【java】克隆clone()方法和相等equals()方法的重写

1.为什么要重写clone()方法? Java中的浅度复制是不会把要复制的那个对象的引用对象重新开辟一个新的引用空间,当我们需要深度复制的时候,这个时候我们就要重写clone()方法. 2.equals()和clone()方法重载的示例 Hourse类: import java.util.Date; public class House implements Cloneable { private int id; private double area; private Date whenBul

为什么重写 equals 方法 必须重写 hashCode

自己学到这,就记录了下来,代码都是自己敲得,有不对的地方希望大神指点出来 如果你重写了equals,比如说是基于对象的内容实现的,而不重写 HashCode,那么很可能某两个对象明明是“相等”,而hashCode却不一样.那么就会返回 false.例如在 HashSet 集合中,不允许存在相同元素,但是当你 new 两个对象,对象内容相同时,在 HashSet 集合中就存在了相同的两个元素,如何解决这个问题?那就要重写 equals 方法,但是重写 equals 方法还不能解决问题,因为在 Ha

HashSet——add remove contains方法底层代码分析(hashCode equals 方法的重写)

引言:我们都知道HashSet这个类有add   remove   contains方法,但是我们要深刻理解到底是怎么判断它是否重复加入了,什么时候才移除,什么时候才算是包括????????? add()方法 首先我们看下这个代码 1 package com.xt.set; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 import java.util.Set; 6 7 public class AddTest { 8

为什么重写equals方法必须重写hashCode?

如果两个对象调用equals返回相等,那么这两个对象调用hashCode方法必须返回相同的整数.如果不重写hashCode,会违反该原则.这个原则主要针对的是映射操作(map接口). 注意: 1. String重写了Object的equals,现在比较的是两个String所包含的char sequence是否相等. String s1 = new String("hello"); String s2 = new String("hello"); s1.equals(

java重写equals方法(重点讲解)

为什么equals()方法要重写? 判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象.这样我们往往需要重写equals()方法. 我们向一个没有重复对象的集合中添加元素时,集合中存放的往往是对象,我们需要先判断集合中是否存在已知对象,这样就必须重写equals方法. 怎样重写equals()方法? 重写equals方法的要求: 1.自反性:对于任何非空引用x,x.equals(x)应该返回tru