2026/06/15 2

왜 equals()와 hashCode()를 함께 재정의해야 할까?

자바를 공부하다 보면 equals()와 hashCode()는 항상 같이 오버라이드하라는 말을 많이 듣는다.처음에는 “둘 다 객체 비교와 관련 있나 보다.” 정도로만 생각했는데, 실제로는 둘의 역할이 완전히 다르다.이번 글에서는 간단한 예제를 통해 왜 두 메서드를 함께 재정의해야 하는지 알아보자.자바는 기본적으로 객체의 주소를 비교한다다음 코드를 보자.// Money는 사용자가 정의한 클래스이다.Money m1 = new Money(5000);Money m2 = new Money(5000);System.out.println(m1.equals(m2));결과는 무엇일까?false대부분의 사람은 5000원과 5000원이니까 true를 예상한다.하지만 자바는 기본적으로 객체의 값을 비교하지 않는다.m1 -> 메모..

TIL 2026.06.15

[Java] Map.Entry 인터페이스 쉽게 이해하기

Map.Entry는 Map에 저장된 key-value 한 쌍을 표현하는 인터페이스이다.Map은 데이터를 다음과 같이 저장한다.Map map = new HashMap();map.put("사과", 3);map.put("바나나", 5);map.put("포도", 2);이 Map 안에는 다음과 같은 데이터가 들어 있다.사과 → 3바나나 → 5포도 → 2여기서 "사과" → 3 같은 key-value 한 쌍을 자바에서는 Map.Entry라고 부른다.왜 Map.Entry가 필요할까?Map을 순회할 때 key만 필요하다면 keySet()을 사용하면 된다.for (String key : map.keySet()) { System.out.println(key);}하지만 key와 value를 둘 다 사용하고 싶다면 보통 ..