zoukankan      html  css  js  c++  java
  • hashcode()和equals()方法

    hashCode()
    equals()

    new String("aa") == new String("aa")
    equals()


    1,一般我们自己用时,只使用equals()方法,用于判断两个对象是否是业务上等价的。
    2,在重写equals()方法时,强烈推荐也要重写hashCode()方法,因为有的集合用到了hashCode()来提高效率。
    equals为true的对象的hashCode值一定要一样。
    equals为false的对象的hashCode值尽量不一样。
    3,可以使用工具自动生成hashCode()与euqals()方法。


    public class TestEquals {

    @Test
    public void test() throws Exception {
    Set<User> set = new HashSet<User>();

    // User user = new User(1);
    // set.add(user);
    // set.add(user);

    set.add(new User(1));
    set.add(new User(1));
    set.add(new User(1));

    System.out.println(set.size());
    }

    @Test
    public void test2() throws Exception {
    System.out.println("aa" == "aa"); // true
    System.out.println(new String("aa") == new String("aa")); // false
    System.out.println("aa" == new String("aa")); // false

    System.out.println("aa".equals(new String("aa"))); // true
    }

    @Test
    public void test3() throws Exception {
    Set<User> set = new HashSet<User>();

    User user = new User(); // id = 0
    set.add(user);

    // session.save(user); // id = 5
    user.setId(5);
    set.add(user); // user.hashCode() == eltOldhashCode;

    // set.add(user);
    System.out.println(set.size());
    }
    }

  • 相关阅读:
    解决Struts中文乱码问题总结
    也谈创业企业CEO该拿多少工资
    Codeforces Round #242 (Div. 2) A. Squats
    设计模式之模板方法模式
    hdu2768Cat vs. Dog (反建法,最大独立集)
    Python
    kvm
    linux bin文件制作
    python
    pytho
  • 原文地址:https://www.cnblogs.com/mxf97826/p/8708161.html
Copyright © 2011-2022 走看看