투로드
Coder ToLoad
투로드
전체 방문자
오늘
어제

블로그 메뉴

  • 홈
  • 알고리즘
  • CS
  • GITHUB
  • 태그
  • 분류 전체보기 (69)
    • Toy Project (0)
      • EternalSNS (0)
    • Algorithm (46)
      • BaekJoon (38)
      • Programmers (7)
      • Code Tree (1)
    • Computer Science (13)
      • JAVA (7)
      • DataBase (4)
    • Backend (7)
      • Spring (2)
      • JPA (2)
      • Django (3)
    • Mobile (2)
      • Android (2)
    • Unity (1)

인기 글

최근 글

hELLO · Designed By 정상우.
투로드

Coder ToLoad

자바 컬렉션 프레임워크(Java Collection Framework) 중 맵(MAP) 정리
Computer Science/JAVA

자바 컬렉션 프레임워크(Java Collection Framework) 중 맵(MAP) 정리

2022. 4. 18. 23:44

자바 컬렉션 프레임워크의 마지막 맵을 정리 해보자.

맵은 아래 그림의 빨간 네모 안의 것들이다.

 

 


 

 

Map

 

Map은 Collection 과 큰 흐름이 달라서 구분되어있다.

Map은 Key와 Value를 하나의 쌍으로 저장하는 방식을 사용한다.

 

Map 인터페이스를 구현한 클래스들은 아래와 같은 특징을 가진다.

  • 요소의 저장 순서를 유지하지 않음.
  • 키는 중복을 허용하지 않지만, 값의 중복은 허용함.

 

Map의 대표적인 메서드들은 다음과 같다.

타입 메서드 설명
void clear() 해당 맵의 모든 매핑을 제거
boolean containsKey(Object key) 해당 맵이 전달된 키를 포함하고 있는지를 확인
boolean contanisValue(Object value) 해당 맵이 전달된 값에 해당하는 하나 이상의 키를 포함하고 있는지 확인
V get(Object key) 해당 맵에서 전달된 키에 대응하는 값 반환, 매핑되는 키가 없으면 null 반환
boolean isEmpty() 해당 맵이 비어있는지 확인
Set<K> keySet() 해당 맵에 포함되어 있는 모든 키로 만들어진 Set 객체 반환
V put(K key, V value) 해당 맵에 전달된 키에 대응하는 값으로 특정 값 매핑
default V putIfAbsent(K key, V value) 해당 맵에 키 값이 존재시 해당하는 값 반환, 없다면 저장하고 null 반환
V remove(Object key) 해당 맵에서 전달된 키에 대응하는 매핑 제거
boolean remove(Object key,
             Object value)
해당 맵에서 특정 값에 대응하는 특정 키의 매핑을 제거
V replace(K key, V value) 해당 맵에서 전달된 키에 대응하는 값을 특정 값으로 대체
boolean replace(K key, V oldValue,
                    V newValue)
해당 맵에서 특정 값에 대응하는 전달된 키의 값을 새로운 값으로 대체
int size() 해당 맵의 매핑의 총 개수 반환
Collection(V) values() 해당 맵에 포함되어 있는 모든 값으로 만들어진 Collection 객체 반환

 

전체 메서드를 보고 싶다면 아래 공식 문서를 참고하자.

 

Map (Java SE 11 & JDK 11 )

If the specified key is not already associated with a value (or is mapped to null), attempts to compute its value using the given mapping function and enters it into this map unless null. If the mapping function returns null, no mapping is recorded. If the

docs.oracle.com

 

 

Hashtable

 

HashMap 클래스와 같은 동작을 하는 클래스

대부분의 메서드는 HashMap에서 사용이 가능하여 현재는 거의 사용하지 않음.

 

기존 코드와의 호환성을 위해서 남아있음.

 

 

HashMap

 

해시 알고리즘을 사용하여 검색 속도가 매우 빠르다.

Map 인터페이스를 구현하고 있기 때문에 위의 Map 메서드는 모두 사용이 가능하다.

 

그 외 성격은 Map 의 기본적인 성격과 같다.

 

알고리즘 풀이에서는 다음 글과 같이 사용하였다.

 

[JAVA] 백준 1620 : 나는야 포켓몬 마스터 이다솜

문제 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은

toload.tistory.com

 

 

TreeMap

 

TreeMap 은 Map 데이터를 이진 검색 트리의 형태로 저장한다.

 

JDK 1.2부터는 이진 검색 트리의 성능을 향상한 레드-블랙 트리(자가 균형 이진 탐색 트리)로 구현한다.

이진 탐색 트리는 기본적으로 왼쪽 자식 노드가 부모보다 작은 값 우측에 큰 값이 저장되는데 그렇기 때문에

저장하면 자동으로 오름차순 정렬이 된다.

 

TreeMap에서 추가적으로 사용하는 메서드는 다음과 같다.

타입 메서드 설명
NavigableMap<K, V> descendingMap() 해당 맵에 포함된 모든 매핑을 역순으로 반환(내림차순)
Map.Entry<K, V> firstEntry() 해당 맵에서 가장 작은 키와 그에 대응하는 값의 엔트리를 반환
K firstKey() 해당 맵에서 가장 작은 키를 반환
Map.Entry<K, V> lastEntry() 해당 맵에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환
K lastKey() 해당 맵에서 가장 큰 키를 반환
Map.Entry<K, V> ceilingEntry(K key) 해당 맵에서 전달된 키와 같거나, 전달된 키보다 큰 키 중에서 가장 작은 키와 그에 대응하는 값의 엔트리를 반환, 없다면 null 반환
K ceilingKey(K key) 해당 맵에서 전달된 키와 같거나, 전달된 키보다 큰 키 중에서 가장 작은 키 반환, 없다면 null 반환
Map.Entry<K, V> floorEntry(K key) 해당 맵에서 전달된 키와 값거나, 전달된 키보다 작은 키 중에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환, 없다면 null 반환
K floorKey(K key) 해당 맵에서 전달된 키와 같거나, 전달된 키보다 작은 키 중에서 가장 큰 키 반환, 없다면 null 반환
SortedMap<K, V> headMap(K toKey) 해당 맵에서 전달된 키보다 작은 키로 구성된 부분만을 반환
Map.Entry<K, V> higherEntry(K key) 해당 맵에서 전달된 키보다 작은 키 중에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환, 없다면 null 반환
K higherKey(K key) 해당 맵에서 전달된 키보다 작은 키 중에 서 가장 큰 키 반환, 없다면 null
Map.Entry<K, V> lowerEntry(K key) 해당 맵에서 전달된 키보다 큰 키 중에서 가장 작은 키와 그에 대응하는값의 엔트리를 반환, 없다면 null 반환
K lowerKey(K key) 해당 맵에서 전달된 키보다 큰 키 중에서 가장 작은 키를 반환, 없다면 null
Map.Entry<K, V> pollFirstEntry() 해당 맵에서 가장 작은 키와 그에 대응하는 값의 엔트리를 반환하고, 해당 엔트리를 맵에서 제거
Map.Entry<K, V> pollLastEntry() 해당 맵에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환하고, 해당 엔트리를 맵에서 제거
SortedMap<K, V> subMap(K fromKey,
         K to Key)
해당 맵에서 fromKey 부터 toKey 이전 까지로 구성된 부분만을 반환
fromKey 는 포함, toKey는 포함되지 않음
SortedMap<K, V> tailMap(K fromKey) 해당 맵에서 fromKey와 같거나 fromKey 보다 큰 키로 구성된 부분 반환

 

TreeMap도 전체 메서드는 아래 공식 문서 링크를 확인하면 된다.

 

TreeMap (Java SE 11 & JDK 11 )

A Red-Black tree based NavigableMap implementation. The map is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time, depending on which constructor is used. This implementation provides guaranteed log(n) ti

docs.oracle.com

 

 

 

이렇게 총 3개의 대분류로 자바 컬렉션 프레임워크를 정리해보았다.

정리하면서 세부 사항은 대부분 알고 있는 내용이었지만 구성하는 메서드들 중에서 새롭게 알게 된 것들이 있어서 추후에 알고리즘이나 코드를 짤 때 활용할 수 있을 것 같다.

 

 

자바 컬렉션 프레임워크(Java Collection Framework) 목록

자바 컬렉션 프레임워크(Java Collection Framework) 중 리스트(List) 정리

자바 컬렉션 프레임워크(Java Collection Framework) 중 셋(SET) 정리

 

 

 

참고한 사이트

http://www.tcpschool.com/java/java_collectionFramework_map

저작자표시 (새창열림)

'Computer Science > JAVA' 카테고리의 다른 글

JVM? GC? 는 무엇을 의미하는지 간단히 알아보기  (0) 2022.06.22
자바 컬렉션 프레임워크(Java Collection Framework) 중 셋(SET) 정리  (0) 2022.04.15
자바 컬렉션 프레임워크(Java Collection Framework) 중 리스트(List) 정리  (0) 2022.04.13
[JAVA] 객체 지향 프로그래밍(Object Oriented Programing)  (0) 2022.01.11
JAVA의 장점과 단점  (1) 2021.12.20
    'Computer Science/JAVA' 카테고리의 다른 글
    • JVM? GC? 는 무엇을 의미하는지 간단히 알아보기
    • 자바 컬렉션 프레임워크(Java Collection Framework) 중 셋(SET) 정리
    • 자바 컬렉션 프레임워크(Java Collection Framework) 중 리스트(List) 정리
    • [JAVA] 객체 지향 프로그래밍(Object Oriented Programing)
    투로드
    투로드
    훌륭한 프로그래머가 되어가는 과정을 담아보는 중입니다.

    티스토리툴바