Java 공부를 하다 보면 거의 반드시 사용하게 되는 자료구조가 있다.👉 HashMap실무에서도 진짜 엄청 많이 사용한다.왜냐면:✔ 조회 빠름✔ 저장 빠름✔ key-value 구조 편리✔ 대부분 O(1) 성능 기대때문이다.근데 많은 사람들이 그냥 이렇게만 사용한다.Map map = new HashMap();그리고 내부 동작은 잘 모른다.하지만 면접이나 실무에서는:✔ hashCode 왜 쓰는지✔ bucket이 뭔지✔ 충돌은 어떻게 해결하는지✔ 왜 평균 O(1)인지✔ equals는 왜 필요한지이런 질문이 진짜 많이 나온다.오늘은 HashMap 내부 동작 원리를 초보자도 이해할 수 있게 쉽게 정리해보겠다.HashMap 이란?👉 Key-Value 형태로 데이터를 저장하는 자료구조예시:{ "name"..
Java 공부하다 보면 거의 반드시 듣게 되는 말이 있다.👉 equals와 hashCode는 같이 재정의해야 한다근데 처음 들으면 솔직히 이해가 잘 안 된다.왜냐면 대부분 이렇게 생각한다."equals만 비교하면 되는 거 아닌가?"실제로 equals만 오버라이딩해도:obj1.equals(obj2)는 정상 동작한다.근데 문제는:✔ HashSet✔ HashMap✔ HashTable✔ 중복 제거✔ key 비교같은 상황에서 발생한다.그리고 실무에서는:중복 데이터조회 실패contains 실패같은 이상한 버그가 생긴다.오늘은 equals와 hashCode를 왜 같이 재정의하는지 초보자도 이해할 수 있게 쉽게 정리해보겠다.먼저 equals란?👉 객체의 논리적 동등성 비교쉽게 말하면:내용이 같은지 비교한다.기본 e..
자바에서 컬렉션 배우면 거의 무조건 나오는 비교가 있다.👉 ArrayList vs LinkedList둘 다 List 인터페이스를 구현해서 사용법은 비슷하다.List list = new ArrayList();List list = new LinkedList();근데 내부 구조가 완전히 다르다.이 차이를 이해하면:✔ 어떤 상황에서 더 빠른지✔ 왜 성능 차이가 나는지✔ 실무에서 뭘 더 많이 쓰는지이런 게 전부 이해된다.ArrayList 란?👉 배열(Array) 기반 리스트내부적으로는 진짜 배열을 사용한다.대충 이런 느낌:[ A ][ B ][ C ][ D ]메모리상에 데이터가 연속적으로 저장된다.LinkedList 란?👉 노드(Node) 연결 기반 리스트각 데이터가 서로 연결되어 있다.대충 이런 구조:[A]..