컬렉션 프레임워크 - Map, Stack, Queue

이동건 (불꽃냥펀치)·2024년 12월 9일
0

컬렉션 프레임워크 _Map

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으로 반환한다.




Map의 구현체



HashMap

  • 구조: HashMap은 해시를 사용해서 요소를 저장한다. 키값은 해시 함수를 통해서 해시 코드로 변환되고 이 해시 코드는 데이터를 저장하고 검색하는데 사용된다.
  • 특징: 삽입, 삭제, 검색 작업은 해시 자료 구조를 사용하므로 일반적으로 상수 시간의 복잡도를 가진다.
  • 순서: 순서를 보장하지 않는다.

LinkedHashMap

  • 구조: LinkedHashMapHashMap과 유사하지만, 연결 리스트를 사용해서 삽입 순서 또는 최근 접근 순서에 따라 요소를 유지한다.
  • 특징: 입력 순서에 따라 순회가 가능하다.
  • 순서: 입력 순서를 보장한다.

TreeMap

  • 구조: TreeMap은 레드-블랙 트리를 기반으로 한 구현이다.
  • 특징: 모든 키는 자연 순서 또는 생성자에 제공된 Comparator에 의해 정렬된다.
  • 성능: 주요 작업들은 lon n의 시간 복잡도를 가진다.
  • 순서: 키는 정렬된 순서로 저장된다.




스택 자료구조



블럭을 아래쪽은 막혀있고 위쪽만 열려있는 통에 넣는다고 생각해보자. 위쪽만 열려있어, 위쪽으로 블록을 넣고 위쪽으로 블럭을 빼야한다.

블럭을 뺄려면 위에서 부터 순서대로 빼야한다.

후입선출

가장 나중에 넣은 것이 가장 먼저 나오는 것을 후입선출이라 하고 이런 자료구조를 스택이라한다.





큐 자료구조




선입선출

후입선출과 반대로 가장 먼저 넣은것이 가장 먼저 나오는 것을 선입선출이라한다. 이런 자료구조를 큐라한다.

  • Queue의 인터페이스는 List,Set과 같이 Collection의 자식이다.

  • Queue의 대표적인 구현체로는 ArrayDeque,LinkedList가 있다.


Deque 자료 구조

Deque는 양쪽 끝에서 요소를 추가하거나 제거할 수 있다. Deque는 일반적인 큐와 스택의 기능을 모두 포함하고 있어 매우 유연한 자료구조이다.

  • offerFirst(): 앞에 추가한다
  • offerLast(): 뒤에 추가한다
  • pollFirst: 앞에서 꺼낸다
  • pollLast(): 뒤에서 꺼낸다




Deque와 Stack, Queue

  • push()를 호출하면 앞에서 입력한다
  • pop()을 호출하면 앞에서 꺼낸다
  • offer()를 호출하면 뒤에서 입력한다
  • poll()을 호출하면 앞에서 꺼낸다










출처: https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B3%A0%EA%B8%89-1/dashboard

profile
자바를 사랑합니다

0개의 댓글

관련 채용 정보