Java에서 Map/Set/Hash가 헷갈린다…(3)
·
Java
사실 Hash는 Map이나 Set과 같은 컬렉션 유형이 아니다. 그럼에도 처음에 헷갈렸던 이유는, Map이나 Set의 구현체를 주입할 때 항상 HashMap, HashSet처럼 Hash라는 이름이 함께 등장하기 때문이었다. 그래서 Hash도 Map이나 Set처럼 하나의 컬렉션 타입이라고 착각하기 쉬웠다. 하지만 Hash는 Map이나 Set과 같은 역할을 담당하는 개념이 아니라, 데이터를 어떻게 저장하고 빠르게 찾을 것인가에 대한 구현 전략이다. 즉, Map과 Set은 “무엇을 표현하는가”에 대한 개념이고, Hash는 “그 개념을 어떻게 효율적으로 구현할 것인가”에 대한 방식이다.Map과 Set은 역할, Hash는 전략Map은 Key–Value 관계를 저장하는 컬렉션이고, Set은 중복을 허용하지 않는 값..
Java에서 Map/Set/Hash가 헷갈린다…(1)
·
Java
Map이 Key와 Value로 저장된다는 사실은 많이 알려져 있다.다만 Map은 컬렉션 인터페이스이기 때문에, 실제로 어떤 방식으로 동작하는지는 구현체에 따라 달라진다.Map result =newEnumMap(Rank.class);for (Lotto lotto : userLottos) {Rankrank= winningLotto.match(lotto); result.put(rank, result.getOrDefault(rank,0) +1);} Map의 핵심적인 특성은 Key가 고유하다는 점이다.이 특성을 활용하여, 각 등수(Rank)가 몇 번 등장했는지 집계하는 용도로 Map을 사용하고 있다. result.put(rank, result.getOrDefault(rank,0) +1); 여기서 getOrD..