| ArrayList | LinkedList | |
| 장점 |
|
|
| 단점 |
|
|
| 구조 | ArrayList는 내부적으로 배열을 기반으로 구현됩니다. 요소들은 연속적인 메모리 공간에 저장되며, 동적으로 크기가 조절됩니다. | LinkedList는 각 요소(Node)가 데이터와 다음 요소를 가리키는 포인터(참조)로 이루어진 노드들의 연결된 구조입니다. |
| 원리 |
|
|
| 사용 이유 | 빠른 임의 접근과 검색이 필요한 경우 요소의 추가나 삭제가 빈번하지 않고, 읽기가 자주 일어나는 경우 |
요소의 추가나 삭제가 빈번하게 일어나는 경우 리스트의 시작이나 끝에서의 요소 추가 및 삭제가 많은 경우 메모리를 더 적게 사용하는 것보다 동적 메모리 할당이 우선시되는 경우 |
ArrayList vs LinkedList
- ArrayList: 배열 기반이기 때문에 인덱스를 통한 빠른 접근이 가능하지만, 요소의 삽입 및 삭제가 비효율적입니다.
(접근성up, 삽입삭제 down) - LinkedList: 각 요소를 노드로 연결하여 삽입 및 삭제가 용이하지만, 임의 접근에는 불리합니다.
(접근성down, 삽입삭제 up)
요약:
- ArrayList는 배열 기반이기 때문에 인덱스를 통한 빠른 접근이 가능하지만, 요소의 삽입 및 삭제가 비효율적입니다.
- LinkedList는 각 요소를 노드로 연결하여 삽입 및 삭제가 용이하지만, 임의 접근에는 불리합니다.
따라서, 사용하고자 하는 목적에 따라 데이터의 접근 패턴과 삽입/삭제의 빈도에 따라 ArrayList 또는 LinkedList를 선택하면 됩니다.
'Backend > Java' 카테고리의 다른 글
| Java - 클래스 변수, 인스턴스 변수, 지역 변수 (1) | 2023.11.29 |
|---|---|
| Java - HashSet, TreeSet, LinkedSet (1) | 2023.11.27 |
| Java 문법 3-1. 객체지향 프로그래밍 이해 (1) | 2023.11.23 |
| Java 문법 2주차 2-14,15,16 컬렉션 (5) | 2023.11.22 |
| Java 문법 2주차 2-13 다차원 배열 (3) | 2023.11.22 |