• 重写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()方法中,

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

      

  • 相关阅读:
    iframe嵌套网页
    text-shadow用法
    响应式布局
    JavaScript控制显示与隐藏
    JavaScript数据类型
    JavaScript基础
    自适应网页设计/响应式Web设计
    不是人家太装逼,而是我们太low
    HTML空格的特性
    如何在Crystal Report中加入Html Field, Rtf Field
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/9056811.html
Copyright © 2020-2023  润新知