Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- Oracle
- Soft Parsing
- EC2
- 인바운드규칙
- 깃랩 젠킨슨 연동
- AWS
- Java
- 윈도우 프로세스 죽이기
- 스프링 실행 에러
- 코딩테스트
- 알고리즘
- jenkins
- Clooection
- SQL Parser
- SQL Optimizer
- SFTP
- SQLP
- jenkins gitlab 연동
- Hard Parsing
- 국가공은자격증
- SQL파싱
- db
- 리액트 돔
- 윈도우 kill -9
- 프로그래머스 전호번호 목록
- SQL
- 프로그래머스
- Row-Source Generation
- FTP
- 베트스앨범
Archives
- Today
- Total
알파돈
[JAVA] HASH란? 본문
해시(Hash) 총정리
언제 해시를 사용할까?
- ✅ 빈도수 계산이 필요할 때
- ✅ 중복 제거가 필요할 때
- ✅ 빠른 검색(O(1))이 필요할 때
- ✅ 키-값 쌍으로 데이터를 관리할 때
- ✅ 그룹핑/분류가 필요할 때
자주 사용하는 패턴
1. 빈도수 계산
Map<String, Integer> countMap = new HashMap<>();
for (String item : items) {
countMap.put(item, countMap.getOrDefault(item, 0) + 1);
}
2. 그룹핑
Map<String, List<T>> groupMap = new HashMap<>();
groupMap.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
3. 중복 제거
Set<Integer> uniqueSet = Arrays.stream(arr).boxed().collect(Collectors.toSet());
4. Map 정렬
// Key 기준
map.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
// Value 기준
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue().reversed())
시간복잡도
- HashMap 삽입/검색/삭제: O(1) (평균)
- HashSet 삽입/검색/삭제: O(1) (평균)
- TreeMap 삽입/검색/삭제: O(log n)
주의사항
- HashMap은 순서를 보장하지 않음 (순서 필요시 LinkedHashMap)
- 정렬이 필요하면 TreeMap 또는 Stream으로 정렬
- null 키는 1개만 허용 (null 값은 여러 개 가능)
'JAVA' 카테고리의 다른 글
| [Java] 스택(Stack)과 큐(Queue) (0) | 2025.10.21 |
|---|---|
| [알고리즘] 프로그래머스 베트스앨범 (0) | 2021.10.24 |
| [알고리즘] 프로그래머스 전화번호 목록 (0) | 2021.09.07 |
| [알고리즘] 프로그래머스 위장 (0) | 2021.09.07 |
| [알고리즘] 프로그래머스 완주하지 못한 선수 (0) | 2021.09.07 |
Comments