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());
}
}

 

转载于:https://www.cnblogs.com/mxf97826/p/8708161.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值