Let’s look at the example first,
package com.bruiser.java8.model;
public class StudentWithOutEqualsAndHashCode {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public StudentWithOutEqualsAndHashCode(String name) {
super();
this.name = name;
}
}
package com.bruiser.java8.model;
import java.util.Objects;
public class StudentWithEquals {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
StudentWithEquals other = (StudentWithEquals) obj;
return Objects.equals(name, other.name);
}
public StudentWithEquals(String name) {
super();
this.name = name;
}
}
package com.bruiser.java8.model;
import java.util.Objects;
public class StudentWithHashCode {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
return Objects.hash(name);
}
public StudentWithHashCode(String name) {
super();
this.name = name;
}
}
package com.bruiser.java8.model;
import java.util.Objects;
public class StudentWithEqualsAndHashCode {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
return Objects.hash(name);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
StudentWithEqualsAndHashCode other = (StudentWithEqualsAndHashCode) obj;
return Objects.equals(name, other.name);
}
public StudentWithEqualsAndHashCode(String name) {
super();
this.name = name;
}
}
package com.bruiser.java.object;
import java.util.HashMap;
import java.util.Map;
import com.bruiser.java8.model.StudentWithEquals;
import com.bruiser.java8.model.StudentWithEqualsAndHashCode;
import com.bruiser.java8.model.StudentWithHashCode;
import com.bruiser.java8.model.StudentWithOutEqualsAndHashCode;
public class EqualsAndHashCodeDemo {
public static void main(String[] args) {
Map<StudentWithOutEqualsAndHashCode, Integer> mapWithoutEqualsHash = new HashMap<>();
mapWithoutEqualsHash.put((new StudentWithOutEqualsAndHashCode("TechBruiser")), 1);
mapWithoutEqualsHash.put((new StudentWithOutEqualsAndHashCode("TechBruiser")), 1);
System.out.println("Size of mapWithoutEqualsHash :: "+ mapWithoutEqualsHash.size());
Map<StudentWithEquals, Integer> mapWithEquals = new HashMap<>();
mapWithEquals.put((new StudentWithEquals("TechBruiser")), 1);
mapWithEquals.put((new StudentWithEquals("TechBruiser")), 1);
System.out.println("Size of mapWithEquals :: "+ mapWithEquals.size());
Map<StudentWithHashCode, Integer> mapWithHash = new HashMap<>();
mapWithHash.put((new StudentWithHashCode("TechBruiser")), 1);
mapWithHash.put((new StudentWithHashCode("TechBruiser")), 1);
System.out.println("Size of mapWithHash :: "+ mapWithHash.size());
Map<StudentWithEqualsAndHashCode, Integer> mapWithEqualsHash = new HashMap<>();
mapWithEqualsHash.put((new StudentWithEqualsAndHashCode("TechBruiser")), 1);
mapWithEqualsHash.put((new StudentWithEqualsAndHashCode("TechBruiser")), 1);
System.out.println("Size of mapWithEqualsHash :: "+ mapWithEqualsHash.size());
}
}
Size of mapWithoutEqualsHash :: 2
Size of mapWithEquals :: 2
Size of mapWithHash :: 2
Size of mapWithEqualsHash :: 1