public class Car {
private final String name;
public Car(String name) {
this.name = name;
}
// intellij Generate 기능 사용
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Car car = (Car) o;
return Objects.equals(name, car.name);
}
}
public static void main(String[] args){
List<Car> Listcars = new ArrayList<>();
Listcars.add(new Car("foo"));
Listcars.add(new Car("foo"));
System.out.println(Listcars.size());//2가 나온다.
Set<Car> Setcars = new HashSet<>();
Setcars.add(new Car("foo"));
Setcars.add(new Car("foo"));
System.out.println(Setcars.size());//1이 아닌 2가 나온다.
}
public class Car {
private final String name;
public Car(String name) {
this.name = name;
}
// intellij Generate 기능 사용
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Car car = (Car) o;
return Objects.equals(name, car.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
참고
equals와 hashCode는 왜 같이 재정의해야 할까
Java 의 equlas 과 hashCode, 동등성과 동일성