Discuss / Java / 根据本章节内容,写了一个代码实例,这样应该有助于理解本章节内容

根据本章节内容,写了一个代码实例,这样应该有助于理解本章节内容

Topic source

雨鸢梦

#1 Created at ... [Delete] [Delete and Lock User]

这个代码定义了一个类Person作为key值传入了map中

package test.MapDemo;
import java.util.*;
public class equalsDemo2 {
    public static void main(String[] args) {
        Person p1 = new Person("zhang",12);
        Map<Person,Integer> map = new HashMap<>();
        map.put(p1,123);
        Person p2 = new Person("zhang",12);
        System.out.println(p1==p2);
        System.out.println(p1.equals(p2));
        System.out.println(map.get(p1));
        System.out.println(map.get(p2));
    }
}

class Person{
    public String name;
    public int age;
    public Person(){}
    public Person(String n,int a){
        name = n;
        age = a;
    }

    @Override    public boolean equals(Object obj) {
        if(obj instanceof Person){
            Person p = (Person) obj;
            return Objects.equals(this.name,p.name) && this.age == p.age;
        }
        return false;
    }

    public int hashCode(){
        return Objects.hash(name,age);
    }
}

结果为

false
true
123
123

p1和p2都是Person类的对象,虽然地址值不一样,但是内容相同

所以map.get()获取的value值是相同的


  • 1

Reply