| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 알고리즘공부
- 클린코드
- 백준
- 자바공부
- 자바프로그래밍
- 개발자취업
- 코딩테스트
- 알고리즘
- JVM
- 자바기초
- 자료구조
- 프로그래밍기초
- HashMap
- 자바개발
- 개발자팁
- Java
- 코딩테스트준비
- 코딩인터뷰
- 객체지향
- 정렬
- 가비지컬렉션
- 개발공부
- 코딩테스트팁
- 코딩공부
- 예외처리
- 메모리관리
- 파이썬
- 프로그래머스
- 멀티스레드
- 자바
- Today
- Total
목록HashMap (4)
코드 한 줄의 기록
자바로 개발하다 보면 리스트나 셋 같은 컬렉션을 순회하면서 요소를 추가하거나 삭제해야 할 때가 있다. 그런데 이 과정에서 ConcurrentModificationException이라는 예외를 만나본 적 있지 않은가? 처음엔 당황스럽지만, 이 예외는 자바 컬렉션의 안전장치로서 중요한 역할을 한다. 오늘은 Iterator의 개념부터 fail-fast 메커니즘, 그리고 컬렉션을 안전하게 수정하는 방법까지 함께 살펴보려 한다.Iterator란 무엇인가?Iterator는 자바 컬렉션 프레임워크에서 컬렉션의 요소들을 순차적으로 읽어오기 위한 표준 인터페이스다. 쉽게 말해, 리스트나 셋처럼 여러 데이터를 담고 있는 자료구조를 하나씩 탐색할 수 있게 해주는 도구라고 생각하면 된다.Iterator는 다음 세 가지 핵심 ..
Java 개발을 하다 보면 Map은 정말 자주 사용하게 되는 자료구조입니다. 특히 HashMap은 거의 매일 쓰게 되는데요, 막상 "왜 HashMap을 쓰는 거야?"라고 물어보면 명확하게 대답하기 어려운 경우가 많습니다. 저도 처음엔 그냥 데이터를 key-value로 저장하는 거구나 정도로만 알고 있었는데, 공부하면서 내부 구조와 각 Map의 특징을 알게 되니 훨씬 더 효율적으로 사용할 수 있더라고요. 특히 커스텀 객체를 키로 사용할 때 제대로 동작하지 않아서 한참 헤맸던 경험도 있습니다. 그래서 오늘은 저와 같은 고민을 하시는 분들께 도움이 되고자, HashMap, LinkedHashMap, TreeMap의 차이점과 함께 키 설계의 핵심을 정리해봤습니다.HashMap: 빠른 검색의 핵심, 해싱의 마법H..
배열(Array)을 처음 배웠을 때 생각했던 게 있어요. 크기가 미리 정해지니까 데이터를 추가하거나 삭제할 때마다 새로운 배열을 만들어야 한다는 점이 정말 불편했습니다. 게다가 데이터가 중간에 삭제되면 뒤에 있는 모든 요소를 앞으로 한 칸씩 이동시켜야 하고요. 이런 문제들을 해결하기 위해 Java가 제공하는 것이 바로 컬렉션 프레임워크(Collection Framework)입니다. 요즘 Java 개발을 하면서 컬렉션 프레임워크를 모르고는 단 하루도 버틸 수 없을 정도로 중요하더군요. 특히 List, Set, Map 이 세 가지는 정말 자주 마주치게 됩니다. 이 글에서는 제가 공부하면서 배운 내용을 여러분과 함께 정리해보겠습니다.컬렉션 프레임워크란 무엇인가?먼저 컬렉션 프레임워크가 정확히 뭔지 알아봅시다...
HashMap과 HashSet의 핵심 차이점HashMap은 키-값 쌍으로 데이터를 저장하는 Map 인터페이스의 구현체이고, HashSet은 중복을 허용하지 않는 Set 인터페이스의 구현체입니다. 흥미롭게도 HashSet은 내부적으로 HashMap을 사용하여 구현되어 있어, 추가되는 값을 키로 사용하고 더미 객체를 값으로 저장합니다.내부 구조와 작동 원리HashMap의 내부 동작HashMap은 해시 테이블을 기반으로 하며, 배열과 연결 리스트(또는 트리)의 조합으로 구현됩니다. 키의 해시코드를 계산하여 배열 인덱스를 결정하고, 해시 충돌 시 연결 리스트나 균형 트리를 사용하여 데이터를 저장합니다. Java 8의 성능 개선 - 트리화(Treeification)Java 8부터는 해시 충돌이 빈번한 버킷에 대해..