Backend/Java
Java - ArrayList, LinkedList 비교
chillmyh
2023. 11. 27. 18:58
ArrayList | LinkedList | |
장점 |
|
|
단점 |
|
|
구조 | ArrayList는 내부적으로 배열을 기반으로 구현됩니다. 요소들은 연속적인 메모리 공간에 저장되며, 동적으로 크기가 조절됩니다. | LinkedList는 각 요소(Node)가 데이터와 다음 요소를 가리키는 포인터(참조)로 이루어진 노드들의 연결된 구조입니다. |
원리 |
|
|
사용 이유 | 빠른 임의 접근과 검색이 필요한 경우 요소의 추가나 삭제가 빈번하지 않고, 읽기가 자주 일어나는 경우 |
요소의 추가나 삭제가 빈번하게 일어나는 경우 리스트의 시작이나 끝에서의 요소 추가 및 삭제가 많은 경우 메모리를 더 적게 사용하는 것보다 동적 메모리 할당이 우선시되는 경우 |
ArrayList vs LinkedList
- ArrayList: 배열 기반이기 때문에 인덱스를 통한 빠른 접근이 가능하지만, 요소의 삽입 및 삭제가 비효율적입니다.
(접근성up, 삽입삭제 down) - LinkedList: 각 요소를 노드로 연결하여 삽입 및 삭제가 용이하지만, 임의 접근에는 불리합니다.
(접근성down, 삽입삭제 up)
요약:
- ArrayList는 배열 기반이기 때문에 인덱스를 통한 빠른 접근이 가능하지만, 요소의 삽입 및 삭제가 비효율적입니다.
- LinkedList는 각 요소를 노드로 연결하여 삽입 및 삭제가 용이하지만, 임의 접근에는 불리합니다.
따라서, 사용하고자 하는 목적에 따라 데이터의 접근 패턴과 삽입/삭제의 빈도에 따라 ArrayList 또는 LinkedList를 선택하면 됩니다.