일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 제이쉘
- 프로그래밍기초
- JShell
- 스프링
- 자바
- 코딩초보
- 이클립스
- github
- 알고리즘
- 초보코딩탈출
- 데이터베이스
- 프로그래밍언어
- 클래스
- Git
- eclips
- 초보코딩
- 프로그래밍
- 기초코딩
- JAVA기초
- 메소드
- Elk
- spring
- Java
- 리눅스
- 자바 스프링
- 배열
- 자바프로그래밍
- 스프링 기초
- 자바기초
- 컴퓨터과학개론
- Today
- Total
키보드워리어
[java]equals 메서드와 hashcode 메서드의 관계 본문
안녕하세요 블로그 방문자 여러분들 모두 환영합니다.
오늘은 지난 포스팅에 이은 내용입니다.
아직 못 보셨다면 여기를 클릭해 주세요.
2023.04.07 - [JAVA입문/JAVA 꿀팁모음] - [자바]🍯꿀팁 - equals 메서드 활용
equlas 메서드와 hashcode 메서드는 왜 붙어있을까요?
Java에서 객체들을 비교할 때 equals 메서드를 사용합니다.
이때 equals 메서드는 객체들이 동일한지 아닌지를 판단하는 역할을 합니다. 그런데 우리가 자주 사용하는 HashMap, HashSet 등의 자료구조들은 객체를 저장할 때 hashCode를 사용합니다.
hashCode는 객체의 고유한 해시값을 반환하는 메서드로, HashMap이나 HashSet 등에서 객체를 저장하거나 조회할 때 사용됩니다. 그런데, hashCode를 구현할 때에는 hashCode 메서드에서 반환하는 값이 동일한 객체들의 hashCode 값이 동일하도록 구현해야 합니다.
이것이 hashCode가 일하는 방식입니다.
HashCode
hashing function은 hashcode를 의미하는데 hash코드를 기준으로 다양한 bucket을 생성합니다.
hashMap의 효율은 hashcode를 어떻게 구현하냐에 따라 달렸습니다. 특정한 bucket에 1000개, 0개가 쏠리지 않게 bucket에 비슷하게 균등되도록 해야 합니다.
두 번째로, hashCode의 값은 ID가 바뀌지 않는 이상 변함이 없어야 합니다. 이 두 가지 조건 때문에 equals 메서드와 hashCode 메서드는 함께 구현되어야 합니다.
결론
따라서 equals 메서드와 hashCode 메서드는 서로 밀접한 관계가 있습니다.
만약 equals 메서드를 구현했다면, hashCode 메서드도 구현해줘야 합니다. 두 메서드를 같이 구현하지 않으면 HashMap 등에서 예상치 못한 결과가 발생할 수 있습니다.
'JAVA > JAVA 꿀팁모음' 카테고리의 다른 글
[자바]🍯꿀팁 - equals 메서드 활용 (0) | 2023.04.07 |
---|---|
[자바]🍯 Block 활용하여 코드의 가독성을 높이자! (0) | 2023.04.06 |
[java🍯]자바 팁 - import | static import? (0) | 2023.04.03 |
[자바] import | static import (0) | 2023.02.26 |
[자바]원시형 타입_초기화메서드_MAX,MIN_VALUE (0) | 2023.02.08 |