티스토리 뷰

HashSet이 객체들을 검사할 땐, 내부적으로 hashCode()와 equlas()를 실행해본다.

따라서 HashSet이 커스텀 클래스를 담을 경우, 중복을 제거할 땐 hashCode()와 equlas()를 오버라이딩하여 재정의해주어야 한다.

    class Dot {
        int x;
        int y;

        Dot(int x, int y) {
            this.x = x;
            this.y = y;
        }

        @Override
        public boolean equals(Object obj) {
            if (this.getClass() != obj.getClass()) return false;
            return (((Dot) obj).x == this.x) && (((Dot) obj).y == this.y);
        }

        @Override
        public int hashCode() {
            return Objects.hash(x, y);
        }
    }

이렇게하면 HashSet이 "Dot의 x, y의 값이 같으면 같은 객체"로 인식하게 할 수 있다.

 

Objects.hash( 변수 )로 Dot의 변수들을 이용해 hashCode를 리턴하는 것을 기억하자.

만약 dot이라는 Dot객체의 hash코드가 확인해보고 싶다면 dot.hashCode()를 print해보면 될 것이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함