위치가 아니라 키로 뭔가를 찾아야 할 때 맵으로 손 뻗어. Rust 의 일꾼은 HashMap<K, V> 고, 정렬 대안으로 BTreeMap 이 있어.
HashMap 기본
HashMap<K, V> 는 키-값 쌍을 평균 O(1) 조회로 저장해. insert 는 추가하거나 교체; get 은 Option<&V> 를 반환해 — 키가 없을 수 있으니 Option 이 또 나와. 키는 hashable 하고 비교 가능해야 하는데, 대부분 표준 타입이 기본으로 그래.
entry API
킬러 기능은 entry 야: map.entry(key).or_insert(0) 가 값으로의 가변 참조를 주고, 키가 없으면 기본값을 삽입해. get-check-insert 춤 없이 '카운터 증가' 나 '키마다 리스트에 append' 를 하는 깔끔한 방법이야. entry 는 표준 라이브러리에서 제일 사랑받는 메서드 중 하나야.
entry().or_insert() 는 세는 관용구야. 발생 횟수를 집계하려면
*map.entry(word).or_insert(0) += 1; 이 '처음 봄' 이랑 '전에 봄' 둘 다 한 줄, 한 조회로 처리해. 수동 if contains_key 검사로 손 뻗는 게 초보 티야 — 조회를 두 번 하고 더 못 읽혀.HashMap vs BTreeMap
HashMap 은 무순서고 빨라. BTreeMap 은 키를 정렬 유지해 (순회가 순서대로) 작은 조회 비용으로. 기본은 HashMap; 정렬 순회나 범위 쿼리가 필요하면 BTreeMap 으로 손 뻗어. 같은 API 모양, 다른 순서 보장.