Map
은 키-값의 쌍을 저장하는 자료구조이다.
Map
은 순서를 유지하지 않는다.Map의 주요 메서드
put(K key, V value)
: 지정된키와값을맵에저장한다.(같은키가있으면값을 변경)
putIfAbsent(K key, V value)
: 지정된키가없는경우에키와값을맵에저장한다.
putAll(Map<? extends K,? extends V> m)
: 지정된 맵의 모든 매핑을 현재 맵에 복사한다.
get(Object key)
: 지정된 키에 연결된 값을 반환한다.
remove(Object key)
: 지정된 키와 그에 연결된 값을 맵에서 제거한다.
clear()
: 맵에서 모든 키와 값을 제거한다.
containsKey(Object key)
: 맵이 지정된 키를 포함하고 있는지 여부를 반환한다.
containsValue(Object value)
: 맵이하나이상의키에지정된값을연결하고있는지 여부를 반환한다.
keySet()
: 맵의키들을 Set
: 형태로반환한다.
values()
: 맵의 값들을 Collection
형태로 반환한다.
size()
: 맵에 있는 키-값 쌍의 개수를 반환한다.
entrySet()
: 맵의 키-값 쌍을 Set<Map.Entry<K,V>>
형태로 환한다.
isEmpty()
: 맵이 비어 있는지 여부를 반환한다.
Key 목록 조회
Set<String>keySet = studentMap.keySet()
Map
의 키는 중복을 허용하지 않는다. 따라서 Map
의 모든 키 목록을 조회하는 keySet()
을 호출하면 중복을 허용하지 않는 Set
을 반환한다.
키와 값 목록 조회
Map
은 키와 값을 보관하는 자료 구조로, 키와 값을 하나로 묶을 수 있는 방법이 필요하다. 이때 Entry
를 사용한다. Entry
는 키-값 쌍으로 이뤄진 간단한 객체다. 이 객체는 Map
내부에서 키와 값을 하나로 묶어서 저장할 때 사용한다.
값 목록 조회
Collection<Integer> values = studentMap.values()
Map
의 값 목록은 중복을 허용한다. 중복을 허용하고 값들의 순서를 보장하지 않기 때문에 단순히 값의 모음이라는 의미의 Collection
으로 반환한다.
HashMap
HashMap
은 해시를 사용해서 요소를 저장한다. 키값은 해시 함수를 통해서 해시 코드로 변환되고 이 해시 코드는 데이터를 저장하고 검색하는데 사용된다.LinkedHashMap
LinkedHashMap
은 HashMap
과 유사하지만, 연결 리스트를 사용해서 삽입 순서 또는 최근 접근 순서에 따라 요소를 유지한다.TreeMap
TreeMap
은 레드-블랙 트리를 기반으로 한 구현이다.Comparator
에 의해 정렬된다.lon n
의 시간 복잡도를 가진다.블럭을 아래쪽은 막혀있고 위쪽만 열려있는 통에 넣는다고 생각해보자. 위쪽만 열려있어, 위쪽으로 블록을 넣고 위쪽으로 블럭을 빼야한다.
블럭을 뺄려면 위에서 부터 순서대로 빼야한다.
후입선출
가장 나중에 넣은 것이 가장 먼저 나오는 것을 후입선출이라 하고 이런 자료구조를 스택이라한다.
선입선출
후입선출과 반대로 가장 먼저 넣은것이 가장 먼저 나오는 것을 선입선출이라한다. 이런 자료구조를 큐라한다.
Queue
의 인터페이스는 List
,Set
과 같이 Collection
의 자식이다.
Queue
의 대표적인 구현체로는 ArrayDeque
,LinkedList
가 있다.
Deque는 양쪽 끝에서 요소를 추가하거나 제거할 수 있다. Deque는 일반적인 큐와 스택의 기능을 모두 포함하고 있어 매우 유연한 자료구조이다.
offerFirst()
: 앞에 추가한다offerLast()
: 뒤에 추가한다pollFirst
: 앞에서 꺼낸다pollLast()
: 뒤에서 꺼낸다
Deque와 Stack, Queue
push()
를 호출하면 앞에서 입력한다pop()
을 호출하면 앞에서 꺼낸다offer()
를 호출하면 뒤에서 입력한다poll()
을 호출하면 앞에서 꺼낸다