List 인터페이스 - 컬렉션

Kim taegwan·2026년 4월 1일
Collection
   |
   └── List (인터페이스)
        ├── ArrayList  ← 컬렉션-1 에서 배움
        ├── LinkedList
        └── Vector     ← 컬렉션-2 에서 배움

ArrayList 와 Vector 는 List 인터페이스를 구현한 클래스입니다. List 인터페이스가 "이런 메서드를 반드시 가져야 한다" 는 규칙을 정해두면 ArrayList, Vector 가 그 규칙을 따라 구현합니다. 그래서 두 클래스의 사용법이 거의 동일했던 것입니다.


List 의 세 가지 특징

1. 순서 유지  : 넣은 순서대로 저장됩니다 (인덱스 0, 1, 2 ...)
2. 중복 허용  : 같은 값을 여러 번 저장할 수 있습니다
3. 가변 크기  : 데이터를 추가/삭제하면 크기가 자동으로 변합니다

배열과 비교하면 이렇습니다.

배열  : 순서 있음, 중복 허용, 크기 고정
List  : 순서 있음, 중복 허용, 크기 자동 조절  ← 크기만 다름

List 선언 방법

import java.util.ArrayList;
import java.util.List;

// 방법 1: ArrayList 타입으로 선언
ArrayList list1 = new ArrayList<>();

// 방법 2: List 타입으로 선언 (더 유연한 방법)
List list2 = new ArrayList<>();

방법 2 처럼 List 타입으로 선언하면 나중에 new ArrayList<>() 자리에 new LinkedList<>() 나 new Vector<>() 로 바꾸기 쉽습니다.

----
주요 메서드
>```java
List<String> list = new ArrayList<>();

// 추가
list.add("사과");          // 맨 끝에 추가
list.add(1, "포도");       // 인덱스 1 위치에 삽입

// 조회
list.get(0);               // 인덱스로 가져오기
list.size();               // 실제 개수
list.contains("사과");     // 포함 여부 → true / false
list.indexOf("사과");      // 위치 반환, 없으면 -1

// 삭제
list.remove("사과");       // 값으로 삭제
list.remove(0);            // 인덱스로 삭제
list.clear();              // 전체 삭제

// 확인
list.isEmpty();            // 비어있는지 → true / false

핵심 요약

List 인터페이스
  순서 있음, 중복 허용, 크기 자동 조절

구현 클래스
  ArrayList  : 일반적인 상황, 조회 빠름
  Vector     : 멀티스레드 환경 (소켓 서버)

List 타입으로 선언하면 나중에 구현체를 바꾸기 쉬움
  List<String> list = new ArrayList<>();
package collection.list;

import java.util.ArrayList;
import java.util.List;

public class MoveRating {

  public static void main(String[] args) {

      List<String> movies = new ArrayList<>();

      movies.add("범죄도시 4 - ****");
      movies.add("기생충 - *****");
      movies.add("올드보이 - ****");
      movies.add("태권V - ***");

      System.out.println("=== 전체 영 목록 === ");
      for (int i = 0; i < movies.size(); i++) {
          System.out.println(i + ". " + movies.get(i));
      }

      System.out.println("\n 총" + movies.size() + "편");

      // 올드보이 삭제
      movies.remove("올드보이 - ****");
      //movies.remove(1);
      System.out.println("\n 삭제 후 총" + movies.size() + "편");

      // "기생충" 이 있는지 확인
      System.out.println("기생충 존재 여부 확인 " + movies.contains("기생충 - *****"));

  } // end of main

}
    

0개의 댓글