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