나의개발일지

컬렉션(Map, Queue, Deque) 본문

언어/Java

컬렉션(Map, Queue, Deque)

아. 이렇게 하면 될거 같은데.. 2024. 1. 29. 21:53
728x90



Map 인터페이스

<Map 계열 주요 메서드>

// 맵에 지정된 키와 값의 매핑을 추가
put(K key, V value)

//지정된 요소 반환
get(Object key);

// 주어진 키에 해당하는 매핑을 제거
remoave(Object key);

//맵이 지정된 키를 포함하고 있는지 여부를 반환
containsKey(Object key)

// 맵에 있는 모든 키-값 쌍을 포함하는 Set을 반환
entrySet();

// 맵에 있는 모든 값들을 포함하는 Collection을 반환합니다.
values()

맵의 키를 포함하는 Set을 반환합니다.
keySet()

 

 

1. HashMap

  • 삽입순서나, 특정 순서를 보당하지 않는다
  • 평균적으로 상당히 빠른 검색
  • 키와 값에 null을 허용

2. LinkedHashMap

  • 삽입 순서를 보장한다. => 순회 가능
  • Hash맵보다 살짝 느림
  • null 허용

3. TreeMap

  • 자연순서 또는 Comparator에 의한 정렬
  • O(log n)의 시간복잡도
  • null키 미허용 , 값은 허

 

Queue 인터페이스

<Queue 계열 주요 메서드>

//추가, 공간 없을 시 error
add(E element);

//추가, 공간 없을 시 false
offer(E element);

// 큐의 맨 앞에 있는 요소를 제거하고 반환, 큐가 비어있을 경우 error
remove();

//큐의 맨 앞에 있는 요소를 제거하고 반환, 큐가 비어있을 경우 null
poll();

//큐의 맨 앞에 있는 요소를 반환, 큐가 비어있을 경우 error
element();

// 큐의 맨 앞에 있는 요소를 반환, 큐가 비어있을 경우 null
peek();

 

1. LinkedList

  • 큐 구현을 위해 활용 가능
  • 무작위 접근 미지원
  • 삽입 및 삭제 효율적

2.PriorityQueue

  • 우선순위 큐를 구현한 클래스
  • 삽입, 삭제 효율적
  • 무작이 접근 미지원

Deque 인터페이스

<deque 계열 주요 메서드>

//추가
addFirst(E element);

addLast(E element);

//추가, 공간 부족시 false
offerFirst(E element);

offerLast(E element);

// 덱의 요소 제거
removeFirst()

removeLast()

// 덱의 요소 제거, 덱이 비었으면 null 반환
pollFirst()

pollLast

// 요소반환
getFirst();

getLast();


// 덱의 요소 반환 , 덱이 비었으면 null
peekFirst()

peekLast()

 

1. ArrayDeque

  • Resizable Array 구현: ArrayDeque는 내부적으로 동적으로 크기가 조정되는 배열을 사용하며, 배열의 크기가 필요에 따라 자동으로 조절
  • FIFO 및 LIFO 연산: 큐(Queue)와 덱(Deque)의 모든 연산을 지원합니다. 따라서 선입선출(FIFO)과 후입선출(LIFO) 모두 가능
  • Null 요소 허용: ArrayDeque는 null 값을 요소로 허용
  • 비동기 처리 지원: ArrayDeque는 스레드 안전하지 않지만, Java 6부터는 ConcurrentLinkedDeque 등의 동기화된 대안도 제공
  • Capacity 정책: 크기가 정해지지 않은 상태에서 요소를 추가하면, 초기 크기로 16이 할당되며 이후에는 필요에 따라 두 배씩 늘어난다.
728x90
반응형

'언어 > Java' 카테고리의 다른 글

컬렉션(List, Set)  (1) 2024.01.29
다형성  (0) 2024.01.28
오버로딩/오버라이딩  (0) 2024.01.25
상속  (0) 2024.01.23
변수  (0) 2024.01.21