
| 특징 | 배열(Array) | 연결 리스트(Linked List) |
|---|---|---|
| 저장 방식 | 연속된 메모리 공간에 저장 | 떨어진 공간에 저장되나 주소로 연결 |
| 조회 | 빠름 (O(1)) : 인덱스로 즉시 조회 | 느림 (O(N)) : 첫 노드부터 순차 탐색 |
| 추가/삭제 | 느림 (O(N)) : 데이터를 뒤로 밀거나 당겨야 함 | 빠름 (O(1)) : 주소 연결만 바꾸면 됨 |
| 크기 | 고정(한 번 생성하면 변경 불가) | 동적 |
import java.util.LinkedList;
//1. 선언
LinkedList<String> list = new LinkedList<>();
//2. 값 추가
list.add("Java");
list.add("Spring");
list.add(1, "Boot"); // 중간에 삽입 (인덱스 1번)
//3. 값 삭제
list.remove(1); // 인덱스로 삭제
list.remove("Java");
//4. 값 조회
System.out.println(list.get(0));

단순 연결 리스트는 위에서 말한 연결 리스트와 동일한 특징을 가지고 있다
양방향 탐색
→ 앞(Next)으로도 갈 수 있고 뒤(Prev)로도 이동이 가능하여 단순 연결 리스트보다 탐색이 유연
효율적인 검색과 삭제
→ 양쪽 방향에서 삽입과 삭제가 가능
메모리 사용이 많다
→ 이전 노드의 주소를 추가로 저장해야 하기 때문에 단순 연결 리스트와 달리 메모리를 더 차지 함

