자바에서 Collection은 인터페이스(interface)인 반면, Collections는 유틸리티 클래스(utility class)라는 점에서 큰 차이가 있습니다. 이 둘은 이름이 비슷해 혼동하기 쉽지만, 역할과 사용 방법이 완전히 다릅니다.
Collection 인터페이스란?
Collection 인터페이스는 자바 컬렉션 프레임워크의 최상위 인터페이스로, 객체들을 그룹으로 관리하기 위한 기본 동작을 정의합니다. Set, List, Queue 등이 Collection 인터페이스의 대표적인 하위 인터페이스입니다.
참고로 Map 인터페이스도 컬렉션 프레임워크에 포함되지만, 키-값(key-value) 쌍 구조를 다루기 때문에 Collection 인터페이스를 상속받지 않습니다.
Collection 인터페이스의 주요 메서드는 다음과 같습니다.
- add() – 요소 추가
- remove() – 요소 제거
- size() – 저장된 요소 개수 반환
- clear() – 모든 요소 삭제
Collections 클래스란?
Collections 클래스는 컬렉션을 더 쉽고 효율적으로 조작할 수 있게 도와주는 유틸리티 클래스입니다. 이 클래스에는 오직 정적(static) 메서드만 포함되어 있어, 객체 생성 없이 클래스 이름으로 바로 호출할 수 있습니다.
Collections 클래스의 대표적인 메서드는 다음과 같습니다.
- sort() – 리스트 정렬
- min() / max() – 최솟값 및 최댓값 조회
- fill() – 모든 요소를 지정한 값으로 채우기
- copy() – 리스트 복사
- reverse() – 리스트 순서 뒤집기
선언 문법 비교
Collection 인터페이스
public interface Collection<E> extends Iterable<E>
Collections 클래스
public class Collections extends Object
예제 코드
아래 예제는 ArrayList에 값을 추가한 후, Collections 클래스의 min()과 max() 메서드를 사용해 최솟값과 최댓값을 출력하는 코드입니다.
import java.util.*;
public class CollectionTest {
public static void main(String args[]) {
ArrayList<Integer> list = new ArrayList<Integer>();
// ArrayList에 요소 추가
list.add(5);
list.add(20);
list.add(35);
list.add(50);
list.add(65);
// Collections.min() 메서드로 최솟값 출력
System.out.println("Minimum value: " + Collections.min(list));
// Collections.max() 메서드로 최댓값 출력
System.out.println("Maximum value: " + Collections.max(list));
}
}실행 결과
Minimum value: 5 Maximum value: 65
정리
Collection은 데이터를 담고 관리하는 자료구조의 설계도(인터페이스)이며, Collections는 그러한 컬렉션 객체들을 정렬, 검색, 변환하는 데 유용한 정적 메서드를 제공하는 도우미 클래스입니다. 두 개념의 차이를 명확히 이해하면 자바 컬렉션 프레임워크를 훨씬 효과적으로 활용할 수 있습니다.