Collection과 Generic이란?

개발 오답 노트·2025년 7월 14일

개념정리

목록 보기
12/13

✅ 1. Collection (컬렉션)

"데이터(객체)를 효율적으로 저장하고 관리하기 위한 자료 구조 클래스들의 집합"

🔹 종류

Java에서 Collection은 인터페이스이며, 주요 하위 인터페이스와 구현 클래스는 다음과 같습니다:

인터페이스설명대표 구현 클래스
List순서 있고, 중복 허용ArrayList, LinkedList
Set순서 없음, 중복 불가HashSet, TreeSet
QueueFIFO 구조의 처리LinkedList, PriorityQueue
Map키-값 쌍 저장 (※ Collection 아님)HashMap, TreeMap

🔹 예시


List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
System.out.println(list); // [apple, banana]

✅ 2. Generic (제네릭)

"클래스나 메서드에서 사용할 데이터 타입을 코드 작성 시가 아니라 사용할 때 지정하는 기법"

즉, 다양한 타입에 대해 타입 안정성(safety)을 보장하며 재사용 가능한 코드 작성이 가능해져요.

🔹 왜 사용하나?

  1. 타입 안정성: 잘못된 타입 저장 방지
  2. 형변환 없이 바로 사용 가능
  3. 코드 재사용성 증가

🔹 예시

List<String> list = new ArrayList<>();
list.add("hello");
// list.add(123); // 컴파일 에러 발생 (타입 안전성)
String s = list.get(0); // 형변환 불필요

✅ 3. Collection과 Generic 함께 사용

제네릭은 Collection에서 가장 많이 사용됩니다.

🔹 예시: 제네릭 없는 코드 (비추천)

List list = new ArrayList();
list.add("text");
list.add(123);  // 다른 타입도 들어갈 수 있음
String s = (String) list.get(0); // 형변환 필요

🔹 예시: 제네릭 사용한 코드 (추천)

List<String> list = new ArrayList<>();
list.add("text");
// list.add(123); // 컴파일 에러
String s = list.get(0); // 형변환 X

✅ 예제 종합


import java.util.*;

public class Example {
    public static void main(String[] args) {
        List<Integer> nums = new ArrayList<>();
        nums.add(10);
        nums.add(20);

        for (Integer num : nums) {
            System.out.println(num * 2);  // 타입 안정성 보장
        }
    }
}

📌 요약

개념설명
Collection데이터를 저장/관리하는 자료구조 (List, Set, Map 등)
Generic클래스/메서드의 타입을 매개변수로 일반화해서 코드 재사용 및 타입 안전성 보장
둘의 관계대부분의 Collection 클래스는 Generic을 함께 사용함 (List<String>처럼)
profile
포토폴리오 https://wikidocs.net/book/10969 유튜브 링크 https://www.youtube.com/@%EC%B5%9C%EC%9B%90%EC%9D%BC-n5r

0개의 댓글