// education

제네릭(Generics)과 컬렉션 프레임워크 (List, Set, Map)

자바 프로그램에서 대용량 데이터를 동적으로 추가, 삭제, 검색, 정렬하기 위한 표준 자료구조 인터페이스 집합인 **컬렉션 프레임워크(Collection Framework)**를 익힙니다.


1. 컬렉션 & 제네릭 용어 사전 (Glossary)


2. 컬렉션 3대 인터페이스 비교표

컬렉션 구분 대표 클래스 순서 유지 중복 허용 주요 사용 목적 및 성능 특성
List 계열 ArrayList 인덱스를 통한 고속 검색($O(1)$)
LinkedList 중간 요소의 빈번한 추가/삭제($O(1)$)
Set 계열 HashSet ❌ (불가) 데이터의 고유 중복 제거
Map 계열 HashMap Key 불가 / Value 허용 Key를 이용한 초고속 데이터 조회($O(1)$)

3. HashMapArrayList 실전 프로그래밍 예제

import java.util.*;

public class CollectionFrameworkMain {
    public static void main(String[] args) {
        // 1. ArrayList 동적 배열 활용
        List<String> fruits = new ArrayList<>();
        fruits.add("사과");
        fruits.add("바나나");
        fruits.add("사과"); // 중복 허용됨

        System.out.println("과일 리스트: " + fruits);

        // 2. HashMap (주민번호 - 이름) 매핑 활용
        Map<String, String> userMap = new HashMap<>();
        userMap.put("900101-1000000", "홍길동");
        userMap.put("950505-2000000", "김영희");

        System.out.println("조회 결과: " + userMap.get("900101-1000000"));
    }
}

4. 자주 묻는 질문 (Q&A)

Q. ArrayListLinkedList는 언제 구분해서 써야 하나요? A. 데이터의 검색이나 순회가 주를 이룰 때는 인덱스 접근이 빠른 ArrayList를 쓰고, 중간에 위치한 데이터의 삽입과 삭제가 자주 발생하는 경우에는 LinkedList를 사용하는 것이 효율적입니다.

← 이전패키지, 모듈 시스템과 자바 기본 패키지 (java.lang) 다음 →자바 입출력(I/O) 스트림과 파일 처리