JAVA · 컬렉션
LinkedList vs ArrayList 비교
두 리스트 구현체의 성능 특성을 비교하고 적절한 선택 기준을 제시합니다.
컬렉션중급ArrayListLinkedList비교성능
핵심 설명
두 리스트 구현체의 성능 특성을 비교하고 적절한 선택 기준을 제시합니다.
Java code
import java.util.*;
public class ListComparison {
public static void main(String[] args) {
// ArrayList: 연속 메모리, 인덱스 접근 O(1)
ArrayList<Integer> arrayList = new ArrayList<>();
// LinkedList: 노드 연결, 인덱스 접근 O(n)
LinkedList<Integer> linkedList = new LinkedList<>();
int size = 100_000;
for (int i = 0; i < size; i++) {
arrayList.add(i);
linkedList.add(i);
}
// 랜덤 접근 — ArrayList 압도적 유리
long start = System.nanoTime();
arrayList.get(size / 2); // O(1)
long arrayTime = System.nanoTime() - start;
start = System.nanoTime();
linkedList.get(size / 2); // O(n)
long linkedTime = System.nanoTime() - start;
System.out.printf("랜덤접근 — Array: %dns, Linked: %dns%n",
arrayTime, linkedTime);
// LinkedList의 장점: Deque 기능
linkedList.addFirst(999); // O(1)
linkedList.addLast(888); // O(1)
linkedList.removeFirst(); // O(1)
// 결론: 대부분 ArrayList가 유리
// LinkedList는 Queue/Deque로만 사용 권장
}
}학습 팁
실무에서는 거의 항상 ArrayList가 유리합니다. CPU 캐시 친화적이고 메모리 오버헤드가 적습니다.
주의할 점
LinkedList는 요소당 24바이트 추가 메모리(prev/next 포인터)가 필요합니다. 메모리 효율이 중요하면 피하세요.
자주 묻는 질문
LinkedList vs ArrayList 비교란 무엇인가요?
두 리스트 구현체의 성능 특성을 비교하고 적절한 선택 기준을 제시합니다.
LinkedList vs ArrayList 비교 학습 시 주의할 점은 무엇인가요?
LinkedList 는 요소당 24바이트 추가 메모리(prev/next 포인터)가 필요합니다. 메모리 효율이 중요하면 피하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.