Java컬렉션과 제네릭

컬렉션과 List Set Map

Java Collections Framework의 핵심인 `List`, `Set`, `Map`을 어떤 상황에 고르는지 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

java
List<String> list = new ArrayList<>();
Set<String> set = new HashSet<>();
Map<String, Integer> map = new HashMap<>();

설명

  • Java 컬렉션은 단순히 "데이터를 여러 개 담는 상자"가 아니라, 순서, 중복 허용 여부, 키-값 관계 같은 정책 차이를 타입으로 드러내는 구조입니다.
  • List는 순서가 있고 중복을 허용하는 목록에 잘 맞습니다. Set은 중복 없는 집합, Map은 키로 값을 찾는 사전에 잘 맞습니다.
  • 같은 컬렉션이라도 구현체 선택도 중요합니다. ArrayList, HashSet, HashMap은 보통 기본 선택지로 많이 쓰이지만, 삽입/정렬/순회 특성이 바뀌면 다른 구현이 더 맞을 수 있습니다.
  • 컬렉션은 배열보다 훨씬 유연하지만, 그만큼 어떤 추상 타입을 써야 의도가 잘 드러나는지도 고민해야 합니다. 변수 타입을 List로 둘지 ArrayList로 둘지조차 설계 선택입니다.
  • Java 학습에서 컬렉션은 후반부가 아니라 중반 핵심입니다. 실제 애플리케이션 코드는 대부분 여러 값을 다루고, 이때 어떤 자료구조를 고르느냐가 코드 품질에 큰 영향을 줍니다.

빠른 정리

타입잘 맞는 상황
List순서가 중요하고 중복 허용
Set중복 제거가 중요
Map키로 값을 빠르게 찾고 싶을 때
구현체ArrayList, HashSet, HashMap이 기본 출발점
실무 팁구현보다 인터페이스 타입으로 받는 편이 유연함

주의할 점

"여러 개 담아야 하니 그냥 List"로 시작하면 의도가 흐려질 수 있습니다. 중복 허용 여부와 키 기반 조회 필요성을 먼저 보고 자료구조를 고르는 편이 좋습니다.

참고 링크

2 sources