Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
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
Archives
Today
Total
관리 메뉴

ki-sd 님의 블로그

[2026-04-03] Set과 Map의 논리적 구조와 중복 제어 본문

JavaStudy

[2026-04-03] Set과 Map의 논리적 구조와 중복 제어

ki-sd 2026. 4. 17. 21:30

데이터를 단순히 줄 세우는 List를 넘어, 각기 다른 고유한 특성을 가진 자료구조인 Set과 Map의 메커니즘을 해부하고 데이터 핸들링 로직을 고도화했다.

 

1. Set: 순서가 없고 중복을 불허하는 집합

  • HashSet은 데이터를 저장할 때 인덱스가 부여되지 않으며, 내부적으로 동일한 데이터가 들어오면 무시하는 수학의 '집합'과 같은 성질을 띤다.
  • 객체의 중복을 판별하기 위해 자바가 내부적으로 객체의 hashCode() 값을 먼저 비교하고, 같으면 equals()로 한 번 더 비교하는 구조를 이해했다. 이를 통해 내가 만든 커스텀 객체(예: 동명이인의 사원 객체)가 중복 저장되지 않도록 두 메서드를 오버라이딩하는 실무적 테크닉을 익혔다.

2. Map: Key와 Value의 쌍(Pair) 구조

  • HashMap은 데이터를 키(Key)와 값(Value)의 형태로 묶어서 저장한다. 키는 중복을 허용하지 않으며(Set의 원리), 값은 중복될 수 있다. 인덱스 대신 키를 통해 데이터에 즉각적으로 접근하므로 검색 속도가 매우 빠르다.

3. 실전 응용: 영어 단어 빈도수 계산기

  • 문장 내에서 특정 단어가 몇 번 등장했는지 카운트하는 알고리즘을 HashMap으로 구현했다.
  • 새로운 단어가 들어오면 키가 존재하는지 판단하여(containsKey), 없을 경우 분기문(if-else)을 통해 초기값 1을 세팅하고, 이미 존재하는 키라면 기존 값을 꺼내 +1로 덮어쓰는(Update) 데이터 축적의 전체 흐름을 하나씩 코드로 뜯어보며 자료구조의 강력함을 실전으로 느꼈다.