ArrayDeque vs. LinkedList

Ga0·2023년 7월 16일
0

java

목록 보기
6/6

"Deque 인터페이스의 구현체인 LinkedListArrayDeque에 대해서 정리해보고자 한다."

Deque

  • 원소의 추가와 삭제를 앞, 뒤 양방향에서 지원하는 선형 컬렉션이다.
  • 큐, 스택 기능을 모두 가지고 있어 원하는대로 사용 가능하다.
  • 대부분의 Deque 구현체는 Deque가 포함하고 있는 원소의 수 제한이 없다.
  • But, Deque 인터페이스는 고정 사이즈 제한을 가진 것과 똑같이 용량 제한 Deque를 지원한다.
  • insert(추가), remove(제거), reverse(뒤집기) 등등 많은 메소드를 지원한다.
  • 어느 방향에서나 동일한 O(1)성능으로 Deque의 양쪽에서 스레드 안전, 메모리에 효율적인 추가 및 제거를 지원한다.

LinkedList

  • 컬렉션 프레임워크의 일부로써, List와 Deque 인터페이스의 양방향 링크 리스트의 구현체이다.
  • 데이터가 연속된 위치에 저장되지 않고 모든 데이터가 데이터 부분과 주소 부분을 별도로 가지고 있다.(데이터는 포인터와 주소를 사용해서 연결함!!)
  • 각 데이터는 노드라고 부르고, 배열에서 자주 삽입 삭제가 이루어질 때 용이하다.
  • null요소를 추가할 수 있다.
  • 반복중에 현재 요소를 제거하는 것이 효율적이다.
  • ArrayDeque보다 더 많은 메모리를 소모한다.
  • 다만, ArrayList보다 검색에 있어서 느리다.
  • 위와 같은 형태인데 양방향이니까 아래와 같이 설명할 수 있을 것 같다.

ArrayDeque

  • Deque 인터페이스의 사이즈 조정이 가능한 Array의 구현체이며, 용량 제한이 없다.
  • null 요소를 추가할 수 없다.
  • 양쪽 끝에서 추가, 제거가 효율적이다.
  • LinkedList보다 적은 메모리를 소모한다.

정리

  • 메모리 소모량이 적을 때는 반복효율이 좋은 ArrayDeque를 사용하고 스택의 사이즈가 커지거나 심한 변동이 예상될 때는 즉각적인 메모리 공간 확보를 위해 LinkedList를 사용한다.
  • ArrayDeque는 다음 노드에 초가적인 reference를 유지할 필요가 없기 때문에 LinkedList보다 메모리 효율적

0개의 댓글