Skip to content

EqualAndHashcodes

Usage

    Person p1 = new Person("Swapnil", 25);
    Person p2 = new Person("Swapnilw", 25);
    // ❌ false if no equals method there.
    System.out.println(p1.equals(p2));
    Set<Person> set = new HashSet<>();
    Map<Integer, Person> map = new HashMap<>();
    set.add(p1);
    set.add(p2);
    System.out.println(set.size());

Person

class Person {

    String name;

    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

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

    @Override
    public int hashCode() {
        int hashCode = Objects.hash(name, age);
        System.out.println(hashCode);
        return hashCode;
    }
}