HashCode 重新

public boolean equals(Object o){
    if (this == o) {
        return true;
    }
    if(o instanceof Person){
        Person p=(Person) o;
        if(p.name==this.name){
            return true;
        }
    }
    return false;
}
public int hashCode(){
    return this.name.hashCode();
}

Person pa=new Person();
pa.setName("12");
Person pb=new Person();
pb.setName("12");
if(pa.equals(pb)){
    System.out.println("==");
}else{
    System.out.println("!=");
}
System.out.print(pa.hashCode()+"-----"+pb.hashCode());
目的是为了name相同就让 两个对象相同,而不是比较内存引用是否一致

HashCode在Java中是一个重要的概念。在Java里,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable [^1]。 hashCode() 的作用是获取哈希码,也称为散列码,其作用是将对象的地址值(即引用变量)映射为integer类型的哈希值,这个哈希码的作用是确定该对象在哈希表中的索引位置 [^2]。实际上,hashCode() 方法返回一个int整数 [^3]。 每个对象都有hashCode,对象相等时,hashCode相同;但对象有相同的hashCode,对象不一定相等,这种情况需要重写hashCode [^3]。 在应用方面,HashCode主要用于散列集合。例如,当把对象放入HashSet时,HashSet会根据对象的hashCode值来确定对象在内部数组中的位置,以实现快速查找和插入。在HashMap中,通过键的hashCode值来确定存储桶的位置,从而提高键值对的存取效率。 以下是一个简单的Java代码示例,展示了hashCode的使用: ```java import java.util.HashMap; import java.util.Map; class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public int hashCode() { int result = 17; result = 31 * result + (name == null ? 0 : name.hashCode()); result = 31 * result + age; return result; } public static void main(String[] args) { Person person1 = new Person("Alice", 25); Person person2 = new Person("Bob", 30); Map<Person, String> personMap = new HashMap<>(); personMap.put(person1, "Some info about Alice"); personMap.put(person2, "Some info about Bob"); System.out.println(personMap.get(person1)); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值