zoukankan      html  css  js  c++  java
  • 重写equals() 和 hashCode()方法

    什么情况下需要重写呢?

    比如去重操作时,

    有时候往Set集合存放对象User,我们User类的字段太多时,比如有50个字段,

    判断两个User对象相同,不需要判断它们所有字段都相同,只需要判断它们的某几个字段相同,就定为它们俩相同,

    这时候需要重写Equals()方法,也要重写HashCode()方法,

    public class User {  
        private String name;  
        private int age;  
        private String passport;  
        //getters and setters, constructor  
    
    
        @Override  
        public boolean equals(Object o) {  
            if (o == this) 
    			return true;  
    		if (o ==null)
    			return false;  
            if (!(o instanceof User)) {  
                return false;  
            }  
            User user = (User) o;  
            return user.name.equals(name) &&  
                    user.age == age &&  
                    user.passport.equals(passport);  
        }  
        
    	//这种17和31散列码的想法来自经典的Java书籍——《Effective Java》第九条
        @Override  
        public int hashCode() {  
            int result = 17;  
            result = 31 * result + name.hashCode();  
            result = 31 * result + age;  
            result = 31 * result + passport.hashCode();  
            return result;  
        }  
    }  
    

      

    在Equals()方法和HashCode()方法中,

    判断哪几个字段重复,就定为对象相同

      

  • 相关阅读:
    ES6新特性
    ng-bind与ng-medol 区别
    验证输入两次密码是否一致angularjs
    最全的node.js安装步骤
    JAVA基础
    localStorage 个人使用总结
    mac中怎么安装python3
    macbook配置homebrew以及安装python3
    python之函数进阶
    mysql数据库入门
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/9056811.html
Copyright © 2011-2022 走看看