Java List 인터페이스: 개요, 구현체, 핵심 메서드, Set과의 차이
Java List 인터페이스
Java List 인터페이스 목적, 일반 구현체, 필수 메서드, Set과의 차이점 탐구.
Java에서 List 인터페이스는 순서 있고 인덱스 기반 컬렉션으로 중복 지원, 랜덤 접근 지원. Collection 확장, 컬렉션 프레임워크 일부.
List 주요 구현체
List 인터페이스이므로 구체적 클래스 인스턴스화해 기능 사용:
- ArrayList – 동적 배열 기반, 빠른 랜덤 접근.
- LinkedList – 이중 연결 리스트 구현, 삽입/삭제 우수.
- Vector – 레거시 동기화 리스트, 현대 코드서 드물게 사용.
- Stack – Vector 하위 클래스, LIFO 시맨틱 따름.

이 클래스들 java.util 패키지 내 정의.
코드에서 List 사용
먼저 java.util.List 임포트(사용할 구체적 클래스도).
// ArrayList 구현 List<String> arrayList = new ArrayList<>(); // LinkedList 구현 List<String> linkedList = new LinkedList<>();
변수 arrayList와 linkedList 이제 모든 List 메서드 노출.
필수 List 메서드
아래 나열된 모든 메서드 Collection 상속, 모든 List 구현체에서 사용 가능.
add(E e) – 요소 추가.
addAll(Collection<? extends E> c) – 대량 추가.
get(int index) – 인덱스로 조회.
iterator() – 순차 순회.
set(int index, E element) – 요소 교체.
remove(Object o) – 값으로 삭제.
removeAll(Collection<? extends E> c) – 대량 제거.
clear() – 리스트 비우기.
size() – 요소 수.
toArray() – 배열 변환.
contains(Object o) – 멤버십 테스트.
ArrayList 실전
import java.util.List; import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args) { List<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("List: " + numbers); int third = numbers.get(2); System.out.println("Accessed Element: " + third); int removed = numbers.remove(1); System.out.println("Removed Element: " + removed); } }
출력
List: [1, 2, 3] Accessed Element: 3 Removed Element: 2
ArrayList 깊은 통찰은 공식 Oracle 문서 참조.
LinkedList 실전
import java.util.List; import java.util.LinkedList; public class LinkedListDemo { public static void main(String[] args) { List<Integer> numbers = new LinkedList<>(); numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("List: " + numbers); int third = numbers.get(2); System.out.println("Accessed Element: " + third); int index = numbers.indexOf(2); System.out.println("Position of 2 is " + index); int removed = numbers.remove(1); System.out.println("Removed Element: " + removed); } }
출력
List: [1, 2, 3] Accessed Element: 3 Position of 2 is 1 Removed Element: 2
LinkedList 추가 세부 사항은 Java Tutorials 참조.
List vs Set
두 인터페이스 모두 Collection 확장하지만 핵심 측면 차이:
- 리스트는 삽입 순서 보존, 중복 허용.
- 셋은 고유성 강제, 보통 정의된 순서 없음(
SortedSet 사용 시 제외).
용례에 따라 순서와 중복 중요하면 선택 달라짐.
구체적 구현체 탐구 계속 예정.