728x90 javacollection2 [JAVA] HashCode와 Equals를 함께 재정의 해야 하는 이유는? (전략적 가이드) 자바 개발을 하다 보면 클래스를 설계할 때 equals()와 hashCode()를 재정의(Override)해야 한다는 이야기를 귀가 따갑게 듣습니다. 하지만 "왜 굳이 둘을 세트로 처리해야 하는가?"에 대해 명확한 논리를 가진 개발자는 의외로 많지 않습니다. 본 포스팅에서는 단순히 이론적인 설명을 넘어, 이 규칙을 어겼을 때 발생하는 실무적인 결함과 자바 콜렉션 프레임워크의 동작 원리를 심층적으로 분석합니다.1. Equals와 HashCode의 역할 정의자바의 모든 객체는 Object 클래스를 상속받으며, 기본적으로 두 메서드를 가지고 있습니다.equals(): 두 객체의 '논리적 동등성(Logical Equality)'을 비교합니다. 기본값은 주소값 비교(==)입니다.hashCode(): 객체를 식별하.. 2026. 1. 26. [JAVA] 멀티스레드 환경의 안전한 동반자, CopyOnWriteArrayList 완벽 가이드 자바 멀티스레드 프로그래밍을 하다 보면 가장 빈번하게 마주치는 문제 중 하나가 바로 '컬렉션의 동시 수정(Concurrent Modification)'입니다. 여러 스레드가 동시에 데이터를 읽고 쓰는 과정에서 데이터가 깨지거나 ConcurrentModificationException이 발생하면 개발자는 당혹감에 빠지기 쉽습니다. 이러한 문제를 우아하게 해결하기 위해 설계된 것이 바로 java.util.concurrent 패키지의 CopyOnWriteArrayList입니다. 오늘은 이 클래스가 왜 탄생했는지, 어떤 원리로 동작하는지, 그리고 실무에서 언제 사용해야 최적의 성능을 낼 수 있는지 심도 있게 살펴보겠습니다.1. CopyOnWriteArrayList란 무엇인가?이름에서 알 수 있듯이 "쓸 때 복사.. 2026. 1. 19. 이전 1 다음 728x90