IT/CS

[알고리즘] ArrayList vs LinkedList

Terriermon 2021. 4. 5. 13:21

알고리즘을 풀다보면 종종 ArrayList와 LinkedList를 어떻게 적재적소에 사용해야하는 지 고민하게 된다.

 

  ArrayList LinkedList
특징 배열 노드
삽입/삭제 시 Shift 연산 다음 노드의 위치를 저장
메모리 공간 연속적 비연속적
저장 순서 논리적 저장 순서 = 물리적 저장 순서 논리적 저장 순서 != 물리적 저장 순서
메모리 할당 정적 메모리 할당 동적 메모리 할당
 
Search O(1) O(n)
Random Access  
Insert O(n) 맨 앞/뒤: O(1)
중간: O(n) > ArrayList 
Delete O(n) O(n) > ArrayList

 

ArrayList

- 삽입/삭제가 일어날 때는 Shift 연산으로 인해 시간이 더 걸리게 된다.

- 데이터 삽입 시, 모든 공간이 꽉 차면 새로운 메모리 공간을 할당받아 옮겨야 한다.

- Array선언 시 Complie time에 할당된다.

- index로 접근이 가능하므로 Search 연산이 많을 때 사용하기에 적합하다.

 

LinkedList

- 검색 시, 처음 노드부터 모두 탐색해야 한다.

- 삽입/삭제 시 원소의 위치를 찾는 시간만 발생한다.

- 새로운 노드가 추가될 때 runtime에 할당된다.

- 삽입/삭제가 많을 때 사용하기에 적합하다.

'IT > CS' 카테고리의 다른 글

[프레임워크] Spring Framework  (0) 2021.04.14
[Web] 쿠키/세션/캐시  (0) 2021.04.13
[Web] Rest란?  (0) 2021.04.13
[Java] Java란?  (0) 2021.04.12
[DB] MariaDB vs MySQL 차이점  (0) 2021.04.12