0번째 주소 + (배열원소타입 크기 x 인덱스)를 계산하여 데이터 조회한다.O(1)O(n)O(n)
이미지 출처 :: 🧱 ArrayList vs LinkedList 특징 & 성능 비교
capacity)이 꽉 차거나, 요소 중간에 삽입을 행하려 할때 기존의 배열을 복사해서 요소를 뒤로 한칸씩 일일히 이동해야 한다.ArrayList에서는 그 공간 만큼 낭비되는 메모리가 많아지게 되고 또한 리사이징 처리에서 시간이 소모된다.O(n)O(1) (맨 앞이나 맨 뒤 요소만)O(1) (맨 앞이나 맨 뒤 요소만)link)한 형태로 구성되어있기 때문에 공간의 제약이 존재하지 않는다.
이미지 출처 :: 🧱 ArrayList vs LinkedList 특징 & 성능 비교
LinkedList는 메모리 이곳저곳에 산재해 저장되어 있는 노드들을 접근하는데 있어 ArrayList보다 당연히 긴 지연 시간이 소모되게 된다. LinkedList의 노드 같은 경우 데이터 이외에 next 나 prev 같은 참조자도 저장해야 되기 때문에 추가적인 공간이 더 필요하다.첫번째 위치에 insert / remove
LinkedList (doubly) : O(1)ArrayList : O(N)마지막 위치에 insert / remove
LinkedList (doubly) : O(1)ArrayList : O(1) / O(N)중간에 insert / remove
LinkedList (doubly) : O(N) / search time + O(1) ArrayList : O(1) / O(N)값으로 search
LinkedList (doubly) : O(N)ArrayList : O(1) / O(N)인덱스로 값 get
LinkedList (doubly) : O(N)ArrayList : O(1)값으로 remove
LinkedList (doubly) : O(N)ArrayList : O(N)시간복잡도 차수 낮은 순서 🧶🪡
:O(1)>O(log n)>O(n)>O(n log n)>O(n^2)>O(n!)
보통
ArrayList와LinkedList중에 어느걸 사용하면 되냐고 묻는다면, 삽입 / 삭제가 빈번하면LinkedList를, 요소 가져오기가 빈번하면ArrayList를 사용하면 된다고 한다. 🥽
-> 이에 대한 다른 의견들이 많아서 뭐가 맞는 건지 모르겠음 . . .
🧱 ArrayList vs LinkedList 특징 & 성능 비교
연결리스트 vs 배열리스트 선택하기 (+성능 향상 사례)