List vs Collection

list 자료형과 Collection 자료형은 Java에서 자주 사용하는 인터페이스로, 이 둘은 서로 다른 수준의 추상화를 제공합니다. 각각의 차이점과 특성을 이해하는 것은 Java 컬렉션 프레임워크를 효과적으로 사용하는 데 중요합니다.

Collection 인터페이스

Collection 인터페이스는 Java의 컬렉션 프레임워크의 최상위 레벨 인터페이스 중 하나로, 다양한 종류의 자료 구조를 다룰 수 있는 공통된 연산들을 정의합니다. Collection 인터페이스는 여러 다른 인터페이스들의 부모 인터페이스입니다.

주요 특징:

  • 기본 연산: 추가(add), 삭제(remove), 포함 여부 검사(contains), 크기(size) 등을 포함한 기본적인 연산을 정의합니다.
  • 다양한 컬렉션 타입: List, Set, Queue 등이 Collection 인터페이스를 상속합니다.
  • 제네릭: Java 제네릭스를 사용하여 타입 안정성을 보장합니다.

주요 메서드:

  • boolean add(E e): 컬렉션에 요소를 추가.
  • boolean remove(Object o): 컬렉션에서 요소를 제거.
  • boolean contains(Object o): 특정 요소가 컬렉션에 있는지 확인.
  • int size(): 컬렉션의 크기 반환.
  • void clear(): 컬렉션의 모든 요소 제거.
import java.util.Collection;
import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();

        collection.add("Element1");
        collection.add("Element2");

        System.out.println("Collection size: " + collection.size()); // 출력: Collection size: 2
        System.out.println("Collection contains 'Element1': " + collection.contains("Element1")); // 출력: Collection contains 'Element1': true
    }
}

List 인터페이스

List 인터페이스는 Collection 인터페이스를 상속하며, 순서가 있는 요소의 모음을 나타냅니다. 즉, 요소의 순서를 유지하며, 인덱스를 통해 요소에 접근할 수 있는 자료 구조를 정의합니다.

주요 특징:

  • 순서 유지: 요소가 추가된 순서를 유지합니다.
  • 인덱스 기반 접근: 인덱스를 통해 요소를 빠르게 접근할 수 있습니다.
  • 중복 허용: 동일한 요소를 여러 번 포함할 수 있습니다.

주요 메서드:

  • void add(int index, E element): 특정 위치에 요소를 삽입.
  • E get(int index): 특정 위치의 요소 반환.
  • E remove(int index): 특정 위치의 요소 제거.
  • int indexOf(Object o): 특정 요소의 인덱스 반환.
  • List<E> subList(int fromIndex, int toIndex): 리스트의 특정 부분 반환.
import java.util.List;
import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        list.add("Element1");
        list.add("Element2");
        list.add(1, "Element1.5");

        System.out.println("List: " + list); // 출력: List: [Element1, Element1.5, Element2]
        System.out.println("Element at index 1: " + list.get(1)); // 출력: Element at index 1: Element1.5
    }
}

Collection과 List의 관계

  • Collection은 Java 컬렉션 프레임워크의 최상위 레벨 인터페이스로, 기본적인 컬렉션 연산을 정의합니다.
  • List는 Collection을 상속하며, 순서가 있는 요소의 모음을 다루는 인터페이스입니다.
  • 모든 List는 Collection이지만, 모든 Collection이 List는 아닙니다. 예를 들어, Set과 Queue도 Collection 인터페이스를 상속하지만, List 인터페이스는 상속하지 않습니다.

요약

  • Collection: 다양한 컬렉션 타입을 위한 공통 인터페이스로, 기본적인 컬렉션 연산을 정의합니다.
  • List: 순서가 있는 요소의 모음을 다루는 인터페이스로, 인덱스 기반 접근과 중복 허용 등의 특성을 가집니다.