hashCode()方法与equals()方法的说明
1,一般我们自己用时,只使用equals()方法,用于判断两个对象是否是业务上等价的。
2,在重写equals()方法时,强烈推荐也要重写hashCode()方法,因为有的集合用到了hashCode()来提高效率。
equals为true的对象的hashCode值一定要一样。
equals为false的对象的hashCode值尽量不一样。
3,可以使用工具自动生成hashCode()与euqals()方法。
1 package com.zsy.study; 2 3 public class User { 4 private Integer id; 5 private String name; 6 public Integer getId() { 7 return id; 8 } 9 public User(){} 10 public User(Integer id) { 11 super(); 12 this.id = id; 13 } 14 public void setId(Integer id) { 15 this.id = id; 16 } 17 public String getName() { 18 return name; 19 } 20 public void setName(String name) { 21 this.name = name; 22 } 23 24 }
测试代码
1 public class TestEquals { 2 3 @Test 4 public void test() throws Exception { 5 Set<User> set = new HashSet<User>(); 6 7 // User user = new User(1); 8 // set.add(user); 9 // set.add(user); 10 11 set.add(new User(1)); 12 set.add(new User(1)); 13 set.add(new User(1)); 14 15 System.out.println(set.size()); 16 } 17 18 @Test 19 public void test2() throws Exception { 20 System.out.println("aa" == "aa"); // true 21 System.out.println(new String("aa") == new String("aa")); // false 22 System.out.println("aa" == new String("aa")); // false 23 24 System.out.println("aa".equals(new String("aa"))); // true 25 } 26 27 @Test 28 public void test3() throws Exception { 29 Set<User> set = new HashSet<User>(); 30 31 User user = new User(); // id = 0 32 set.add(user); 33 34 // session.save(user); // id = 5 35 user.setId(5); 36 set.add(user); // user.hashCode() == eltOldhashCode; 37 38 // set.add(user); 39 System.out.println(set.size()); 40 } 41 }
需导入junit.jar 测试类
博客地址: | http://www.cnblogs.com/oumyye/ |
博客版权: | 本文以学习、研究和分享为主,欢迎转载,转载请务必注明出处,谢谢合作。 如果文中有不妥或者错误的地方请指出。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! |