티스토리 뷰
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해보면 될 것이다.
'알고리즘 > 코딩 스킬' 카테고리의 다른 글
| stable한가? stable하지 않는가? (0) | 2020.08.26 |
|---|---|
| 비트연산 (0) | 2020.08.25 |
| 알고리즘 문제를 풀 때 내가 갖추어야 할 자세 (0) | 2020.08.24 |
| 배열을 시계 또는 반시계 방향으로 순회하기 (0) | 2020.07.02 |
| Java 문자열에서 숫자만 제외하기 or 숫자만 뽑아내기 (0) | 2020.06.26 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 톱니바퀴
- 프로그래머스
- header
- 14891
- dfs
- 코딩테스트 연습
- 배열순회
- 구현
- withCredentials
- 드래곤 커브
- 시뮬레이션
- 우선순위큐
- java
- 완전탐색
- 브라우저 요청
- BOJ
- 큰 수 만들기
- Access-Control-Allow-Origin
- Greedy
- 코딩테스트
- 재귀
- 자바
- 아기상어
- 16234
- 그리디
- 구명보트
- 사다리 조작
- 인구이동
- 백준
- 코테
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함