1. equals()란?
equals()란 객체를 비교하는 함수입니다. 두 객체가 내용이 같아면 true입니다.
반면에 == 은 메모리 주소(참조)비교입니다. 두 객체가 완전히 똑같은 한 객체인지 비교하는 것입니다.
String a = new String("hi");
String b = new String("hi");
System.out.println(a == b); // false (서로 다른 객체)
System.out.println(a.equals(b)); // true (내용은 같음)
보통 문자열 비교는 equals()로 하는게 편합니다.
2. hashCode()란?
객체를 어떤 번호로 바꿔주는 함수입니다.
HashMap, HashSet 같은 해시 기반 컬렉션이 번호로 빠르게 찾기가 유리한 이유입니다.
cf. HashMap/HashSet이 hashCode 쓰이는 흐름
HashSet에 값이 있는지 확인할 때
- 먼저 hashCode()로 어느 바구니(bucket)인지 고른다.
- 그 바구니 안 후보들 중에서 equals()로 진짜 같은지 확인.
- 저장할 때 add(key) / put(key, value)
- 찾을 때 contains(key) / get(key)
equals()가 true면, hashCode()도 반드시 같아야 합니다.
따라서, equals 재정의하면 hashCode도 같이 재정의해야 합니다.
'Java' 카테고리의 다른 글
| [Java] Exception(예외) (0) | 2026.02.05 |
|---|---|
| [Java] Stream (0) | 2026.02.03 |
| [Java] GC (0) | 2026.01.30 |
| [Java] Synchronized에 대해 - 2 (0) | 2026.01.26 |
| [Java] Synchronized에 대해 (0) | 2026.01.23 |