Min IT's Devlog

[Java-자료구조] ArrayList vs LinkedList 본문

CS/Data Structure

[Java-자료구조] ArrayList vs LinkedList

egovici 2022. 1. 16. 18:30

지금까지 ArrayList와 LinkedList의 특징과 장단점, 구현까지 해보았다.

 

 

[Java] ArrayList 사용과 구현

ArrayList  List 인터페이스를 상속받은 클래스 일반적인 배열과 동일하게 연속적인 공간을 사용하고 인덱스 또한 0부터 시작된다. 인덱스를 통한 임의접근이 가능하다 객체가 추가되면서 현재 가

minit-devlog.tistory.com

 

 

[Java] LinkedList 사용과 구현

LinkedList List 인터페이스를 상속받은 클래스 연속적인 공간을 사용하지 않고 모든 데이터가 노드(데이터 + 주소)로 구성되어있다. index가 없기 때문에 임의접근이 불가능하다. Singly LinkedList(data + n

minit-devlog.tistory.com

 

Collection Framework에서의 계층구조

LinkedList를 확인하면 Abstract Sequential List를 상속하고 있는 반면, ArrayList의 경우 AbstractList를 상속하고 있다.

즉 구조적인 차이가 나타나는 것을 확인할 수 있다.

data data data data

ArrayList

LinkedList

 

  ArrayList LinkedList
저장방식 연속적인 메모리 공간 불연속적인 메모리 공간
검색 인덱스 기반의 자료구조로 빠름 모든 요소 탐색이 필요하기에 느림
삽입/삭제 느림 빠름
유리한 상황 데이터의 개수가 자주 변하지 않고 검색, 수정을 자주 할 경우 데이터의 개수의 변경이 잦고 삽입이나 삭제가 자주 일어나는 경우

 

시간 복잡도(Time Complexity)

작업 메소드 ArrayList LinkedList
데이터 마지막에 추가 add() O(1)
copy op가 필요시 O(N)
O(1)
데이터 중간에 추가 add(int index, Object element) O(N) O(N)
index에 위치한 데이터 제거 remove(int index) O(N) O(N)
특정 데이터를 제거 remove(Object element) O(N) O(N)
index로 데이터 검색/ 수정 get(int index)
set(int index, Object element)
O(1) O(N)
데이터로 index  검색 indexOf(Object element) O(N) O(N)

 

Comments