| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- HashMap
- 코딩인터뷰
- 코딩테스트팁
- 자바
- 객체지향
- 개발자팁
- 개발자취업
- 프로그래머스
- 파이썬
- 코딩테스트
- 자바프로그래밍
- 코딩공부
- 자료구조
- 자바기초
- 메모리관리
- 예외처리
- 알고리즘공부
- 프로그래밍기초
- 개발공부
- 멀티스레드
- 코딩테스트준비
- 클린코드
- 알고리즘
- 자바공부
- JVM
- 가비지컬렉션
- 정렬
- 자바개발
- 백준
- Java
- Today
- Total
목록hashCode (2)
코드 한 줄의 기록
Java 개발을 하다 보면 Map은 정말 자주 사용하게 되는 자료구조입니다. 특히 HashMap은 거의 매일 쓰게 되는데요, 막상 "왜 HashMap을 쓰는 거야?"라고 물어보면 명확하게 대답하기 어려운 경우가 많습니다. 저도 처음엔 그냥 데이터를 key-value로 저장하는 거구나 정도로만 알고 있었는데, 공부하면서 내부 구조와 각 Map의 특징을 알게 되니 훨씬 더 효율적으로 사용할 수 있더라고요. 특히 커스텀 객체를 키로 사용할 때 제대로 동작하지 않아서 한참 헤맸던 경험도 있습니다. 그래서 오늘은 저와 같은 고민을 하시는 분들께 도움이 되고자, HashMap, LinkedHashMap, TreeMap의 차이점과 함께 키 설계의 핵심을 정리해봤습니다.HashMap: 빠른 검색의 핵심, 해싱의 마법H..
가장 먼저 결론부터 말하면, “도메인 모델의 동등성은 일관되고 예측 가능해야 하며, 컬렉션에 넣는 순간부터 계약을 끝까지 지켜야 한다.” 이 문장을 머리에 박아두면 equals/hashCode/toString을 설계할 때 흔들리지 않는다. 아래 내용은 실무에서 부딪혔던 함정과 Lombok으로 편하게 작성할 때 생기는 미묘한 위험까지 담았다.왜 equals/hashCode/toString이 중요한가자바에서 객체는 기본적으로 참조 동일성(==)을 기준으로 비교된다. 하지만 비즈니스 로직에서는 “같은 의미”를 갖는 객체를 값으로 다루고 싶을 때가 많다. 예를 들어, 같은 주민등록번호의 User는 같은 사람이다. 이때 equals와 hashCode를 “의미 기반”으로 재정의하면, Set이나 Map 같은 컬렉션이..