PHpullh
학습 라이브러리/Java/LinkedList vs ArrayList 비교

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 포인터)가 필요합니다. 메모리 효율이 중요하면 피하세요.