Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 Collection과 Collections의 차이점 완벽 정리

자바 컬렉션 프레임워크(Java Collection Framework)는 객체들을 효율적으로 저장하고 조작하기 위한 핵심 도구입니다. 이 프레임워크에는 다양한 래퍼 클래스, 편의 클래스, Vector나 Hashtable 같은 레거시 구현체, 그리고 여러 컬렉션 인터페이스들이 포함되어 있습니다.

Collection이란?

Collection은 자바 컬렉션 프레임워크의 최상위 인터페이스입니다. 크게 두 가지 계열로 나눌 수 있습니다.

  • java.util.Collection — Set, Queue, List 등의 하위 인터페이스를 포함합니다.
  • java.util.Map — Map, SortedMap 등을 포함합니다. Map은 엄밀히 말해 Collection을 상속하지는 않지만, 컬렉션 프레임워크의 일부로 분류됩니다.

Collections란?

반면 Collections는 이름은 비슷하지만 성격이 완전히 다른 유틸리티 클래스입니다. 개발자에게 편의 메서드를 제공하는 것이 주된 목적이며, 이 클래스의 모든 메서드는 static으로 선언되어 있어 객체 생성 없이 바로 호출할 수 있습니다. 대표적인 기능으로는 컬렉션 정렬(sort), 요소 뒤집기(reverse), 이진 탐색(binarySearch), 그리고 스레드 안전한 동기화 컬렉션(synchronized collection) 반환 등이 있습니다.

단, 이 클래스의 메서드에 null인 컬렉션이나 클래스 객체가 전달되면 NullPointerException이 발생하므로 주의해야 합니다.

Collection vs Collections 비교표

번호구분 기준CollectionCollections
1 기본 개념 자바 컬렉션 프레임워크의 인터페이스입니다. 컬렉션 프레임워크의 유틸리티 클래스입니다.
2 정적 메서드 모든 메서드가 static인 것은 아닙니다. 모든 메서드가 static으로 선언되어 있습니다.
3 주요 용도 여러 객체를 하나의 단일 객체에 저장하는 데 사용됩니다. 컬렉션 객체를 조작(정렬, 검색, 동기화 등)하는 데 사용됩니다.

예제 코드: Collection과 Collections 함께 사용하기

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

public class Main {
    public static void main(String[] args) {
        // List 생성
        List list = new ArrayList();
        list.add("HCL");
        list.add("DELL");

        // 자연 순서(natural ordering)에 따라 오름차순 정렬
        Collections.sort(list);

        list.forEach(System.out::println);
    }
}

위 예제에서는 ArrayList로 List 객체를 생성한 뒤, 유틸리티 클래스인 Collections의 sort() 메서드를 사용해 요소를 오름차순으로 정렬했습니다. 실행 결과는 "DELL", "HCL" 순서로 출력됩니다. 이처럼 Collection이 데이터를 담는 그릇이라면, Collections는 그 그릇을 다루는 도구 모음이라고 이해하면 됩니다.