HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏪
TS Store
/
📃
Map
📃

Map

Person
완료율%
상태
완료
나의 블로그
Think Sharing (TS)
🖍️
HashMap, TreeMap, LinkedHashMap

주제

💡
맵에 대해서 알아봅세 ~

목차

  • 맵이란 무엇인가
  • 왜 써야 하는가
  • 어떻게 동작하는가

내용

 
collection : 데이터를 모아서 관리할 수 있는 클래스를 컬렉션이라고 한다.

💨What [맵이란?]

  • key value 쌍인 엔트리들을 저장 관리해주는 컬렉션
  • 종류
    • hashMap
      • 다른 맵에 비해 빠르다
      • 순서를 보장하지 않는다
      • 시간복잡도 : 1
    • TreeMap
      • key value쌍을 내부적으로 레드 블랙트리로저장하여 관리한다. 따라서 키 값을 기준으로 정렬된 상태를 유지한다
      • comparable 인터페이스를 그현하면 사용자가 정렬된 순서를 조정 할 수 있다
      • 레드 블랙 트리 자료구조를 사용함으로써 시간복잡도는 : log n이다
      • 추가 삭제 연산 또한 그러하다.
      • hashMap과 비교해서는 비교적 느리다
    • LinkedHashMap
      • 입려된 순서를 기억한다.
      • 저장된 각 항목은 Map.Entry 클래스를 구현한 Node 클래스로 내부에 after , before 멤버를 갖는 연결리스트 구조를 가지고 있다
        • 내부적으로 이중 연결리스트를 사용한다
      • 시간복잡도는 1을 가진다

❓Why

💡
빠른 엑세스를 필요로 할때 ‼️

✅How [맵은 어떻게 동작할까]

  • put 메소드를 이용해서 엔트리를 추가하면 키 값으로 넘겨준 객체의 해시 코드를 계산하여 엔트리 배열의 접근 인덱스로 접근한다.
  • 해시 값 계산은 기본적으로 해시 코드 메소드 기반으로 동작한다. 또한 해시 충돌에 대비하여 equals 메소드 까지 사용해서 키 값이 정말 같은 경우에만 value를 리턴한다. 따라서 키 값으로 사용할 클래스의 특성에 따라 필요한 경우 hash code 메소드와 equals 메소드를 오버라이드 해야 할 수 있다.