List 인터페이스

Soobin Kim·2024년 4월 6일

Java

목록 보기
33/47

순서가 지정된 컬렉션으로, 리스트에서 각 요소가 삽입되는 위치를 정확하게 제어할 수 있다.
또한 정수 인덱스로 요소에 액세스하고 검색할 수 있다.

  • java.util.Collection을 상속한 인터페이스로, List를 구현한 클래스들은 Collection의 메서드를 사용할 수 있다.
  • java.lang.IteratorCollection이 상속하므로, List를 구현한 클래스들은 Iterator의 메서드를 사용할 수 있다.

구현 클래스

  • ArrayList
    내부적으로 배열을 사용하여 요소를 저장하므로 인덱스를 통해 빠르게 접근할 수 있어 검색 속도가 빠르다. 요소의 삭제 및 추가가 빈번하지 않고 접근이 빈번할 때 사용된다. 또한 크기를 동적으로 조정할 수 있어 유연하다.
  • LinkedList
    이중 연결 리스트로 요소를 저장하므로 요소의 추가 및 삭제가 빈번할 때, 요소의 접근이 적을 때 유용하다. 요소에 대한 순차적 접근이 필요할 경우에는 ArrayList보다 성능이 떨어지지만 삽입과 삭제가 더 효율적이다.
  • Vector
    ArrayList와 유사하지만 스레드에 안전하도록 구현되어 있어 요소의 추가나 삭제가 빈번하고 다중 스레드 환경에서 안전한 리스트가 필요한 경우 사용된다. 이는 메서드에 대한 동기화가 내장되어 있어 여러 스레드가 동시에 접근해도 안전하다(단일 환경에서는 ArrayList가 더 우수하다).

Docs


예시

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

// 추가
list.add("a");
list.add("B");
list.add("a"); // 중복 허용

// 개수 확인
System.out.println(list.size());

// 포함 여부 확인 
System.out.println(list.contains("a")); // true

// 접근
list.get(0);

// 삭제
list.remove(0); // ["B", "a"]

// 수정
list.set(0,"b"); // ["b", "a"]

// 비우기
list.clear();

// 비어졌는지 확인
System.out.println(list.isEmpty()); // true

0개의 댓글