on
ArrayList와 LinkedList차이점
ArrayList와 LinkedList차이점
List인터페이스를 구현하는 ArrayList클래스와, LinkedList클래스
- 기존에는 배열을 사용했을 것이다. 하지만 배열은초기에 길이를 지정해야하며 배열의길이는 동적으로 변경할 수 없다는 점에서 상황에 맞게 사용했어야 했다.
- 얼마나 많은 데이터를 사용할지 알 수가 없기 때문에 가변적으로 리스트의 개수를 늘리기 위해서 List를 사용하게되었다.
ArrayList
- 내부적으로 데이터를 배열에서 관리하며 데이터의 추가,삭제를 위해 임시배열을 생성해 데이터를 복사하는 방법을 사용하고 있다. (기본은 10으로 초기화되어있다.)
- 대량의 자료를 추가/삭제하는 경우에는 그만큼 데이터의 복사가 많이 일어나게 되어 성능 저하가 발생
- 장점은 각 데이터를 인덱스를 가지고 있기 때문에 한 번에 참조가 가능해서 데이터 검색에는 빠르다.
LinkedList
- 데이터를 저장하는 각 노드가 이전노드와 다음노드의 상태만 알고있다.
- 데이터 추가/삭제시 불필요한 데이터의 복사가 없어서 추가,삭제시 유리하다.
- 단점은 데이터 검색시 처음부터 노드를 순회해야하기 때문에 성능저하가 발생
즉
ArrayList는 인덱스기반의 자료구조이며 get(int index) -> O(1) 의 시간 복잡도를 가짐
LinkedList는 검색 시 모든 요소를 탐색-> O(N)의 시간복잡도가짐
ArrayList는 삽입,삭제이후 다른 데이터를 복사해야하기 때문에 LinkedList에비해 느리다.
LinkedList는 이전노드와 다음노드를 참조하는 상태만 변경하면 되기 때문에 삽입,삭제가 용이
from http://hanna97.tistory.com/317 by ccl(A) rewrite - 2021-08-04 23:00:15