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: 순서가 있는 요소의 모음을 다루는 인터페이스로, 인덱스 기반 접근과 중복 허용 등의 특성을 가집니다.