zoukankan      html  css  js  c++  java
  • 重写equals和hashCode

    equals()方法
    1. 自反性:A.equals(A)要返回true.
    
    
    2. 对称性:如果A.equals(B)返回true, 则B.equals(A)也要返回true.
    
    
    3. 传递性:如果A.equals(B)为true, B.equals(C)为true, 则A.equals(C)也要为true. 说白了就是 A = B , B = C , 那么A = C.
    
    
    4. 一致性:只要A,B对象的状态没有改变,A.equals(B)必须始终返回true.
    
    
    5. A.equals(null) 要返回false.
    //测试

    public
    class Person { private int age; private String name;
       @Override
    public boolean equals(Object obj){ if(this == obj){ return true; }else if(!(obj instanceof Person)){ return false; }else{ Person p = (Person) obj; return p.name.equals(name) && p.age == age; } } @Override public int hashCode(){ int result = 17; result = result * 31 + age; result = result * 31 + name.hashCode(); return result; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
    //验证,如果不重写hashCode(),输出false;
       public static void main(String[] args) {
            Person p = new Person();
            p.setAge(3);
            p.setName("ff");
            Person p1 = new Person();
            p1.setAge(3);
            p1.setName("ff");
            Set<Person> set = new HashSet<Person>();  
            set.add(p);
            System.out.println(set.contains(p1));
        }
     
  • 相关阅读:
    资源 | 辟谣平台
    数据分析常用思维
    数据分析常用工具
    杂谈 | 标准化和个性化
    杂谈 | 学以致用
    杂谈 | 工具思维的陷阱
    杂谈 | 习得性无助&习得性乐观
    spark连接mysql
    spark累加器
    java操作excel数据写入map集合并按照value排序
  • 原文地址:https://www.cnblogs.com/start-fxw/p/7299261.html
Copyright © 2011-2022 走看看