HashSet의 특징
HashSet은 중복을 빠르게 체크할 수 있는 자료구조이다.
기존의 List에서 중복여부를 체크하려면 List의 모든 요소를 순회하며 해당 값이 있는지 체크(O(n))해야 했지만
HashSet은 그러한 과정을 O(1)로 해결한다.
하지만 HashSet의 타입이 Integer나 String이 아닌 사용자가 정의한 객체라면 어떻게 될까?
이때는 중복을 속성의 값으로 체크하는 것이 아닌 객체의 참조값으로 체크를 한다.
속성의 값으로 중복을 체크하고 싶다면 어떻게 해야할까?
객체의 속성으로 중복 체크
해당 클래스에서 equals()메서드와 hashCode()메서드를 오버라이드 해주면 된다.
public class Person {
private String name;
private int age;
// Constructor, getters, and setters
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
'Java' 카테고리의 다른 글
[Java] 람다식의 이해 (0) | 2024.07.25 |
---|---|
[Java] HashMap - value값을 기준으로 정렬 (0) | 2024.07.23 |
[Java] 배열 정렬하기 (0) | 2024.06.16 |
[Java] 배열 복사 및 출력하기 (0) | 2024.06.02 |
[Java] String vs StringBuilder, 코딩테스트에서 StringBuilder를 쓰는 이유 (0) | 2024.04.23 |