본문 바로가기
자바 (JAVA)

📚 JAVA 9강: 컬렉션 프레임워크 (Collection Framework)

by demianpark127 2025. 1. 3.
SMALL

📚 9강: 컬렉션 프레임워크 (Collection Framework)


🚀 1. 컬렉션 프레임워크란?

  • 컬렉션(Collection): 객체를 효율적으로 저장하고 관리하기 위한 자료구조의 집합입니다.
  • 컬렉션 프레임워크(Collection Framework): 자바에서 제공하는 표준화된 자료구조알고리즘의 모음입니다.
  • 주요 목적:
    • 데이터 저장
    • 데이터 검색
    • 데이터 수정 및 삭제

🚀 2. 컬렉션 프레임워크의 구조

📌 2.1 주요 인터페이스

인터페이스 설명 주요 구현체
List 순서가 있는 데이터 저장, 중복 허용 ArrayList, LinkedList
Set 순서 없음, 중복 불가 HashSet, TreeSet
Map 키-값 쌍으로 저장, 키는 중복 불가 HashMap, TreeMap

📌 2.2 컬렉션 계층 구조

Collection (인터페이스)
│
├── List (인터페이스)
│    ├── ArrayList (클래스)
│    ├── LinkedList (클래스)
│
├── Set (인터페이스)
│    ├── HashSet (클래스)
│    ├── TreeSet (클래스)
│
└── Map (인터페이스)
     ├── HashMap (클래스)
     ├── TreeMap (클래스)

🚀 3. List 인터페이스

  • 순서가 있는 데이터의 집합
  • 중복 허용
  • 인덱스로 접근 가능

📌 3.1 ArrayList

  • 가장 많이 사용되는 List 구현체
  • 배열 기반, 검색 속도 빠름, 삽입/삭제 속도 느림

ArrayList 예제

import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        // 데이터 추가
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        // 데이터 출력
        for (String fruit : list) {
            System.out.println(fruit);
        }

        // 특정 요소 접근
        System.out.println("첫 번째 과일: " + list.get(0));

        // 데이터 삭제
        list.remove(1);

        System.out.println("삭제 후 리스트: " + list);
    }
}

📌 출력 결과:

Apple
Banana
Cherry
첫 번째 과일: Apple
삭제 후 리스트: [Apple, Cherry]

🚀 4. Set 인터페이스

  • 순서가 없음
  • 중복 불가

📌 4.1 HashSet

  • 중복을 허용하지 않음
  • 순서를 보장하지 않음

HashSet 예제

import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();

        // 데이터 추가
        set.add("Apple");
        set.add("Banana");
        set.add("Apple"); // 중복 요소 추가 (무시됨)

        // 데이터 출력
        for (String fruit : set) {
            System.out.println(fruit);
        }
    }
}
📌 출력 결과:

Apple
Banana

🚀 5. Map 인터페이스

  • 키(Key)와 값(Value) 쌍으로 데이터 저장
  • 키는 중복 불가, 값은 중복 가능

📌 5.1 HashMap

  • 빠른 데이터 검색
  • 순서 보장 안됨

HashMap 예제

import java.util.HashMap;

public class MapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();

        // 데이터 추가
        map.put("Apple", 10);
        map.put("Banana", 20);
        map.put("Cherry", 30);

        // 특정 키의 값 가져오기
        System.out.println("Apple의 값: " + map.get("Apple"));

        // 전체 데이터 출력
        for (String key : map.keySet()) {
            System.out.println(key + ": " + map.get(key));
        }
    }
}
📌 출력 결과:

Apple의 값: 10
Apple: 10
Banana: 20
Cherry: 30

🚀 6. 컬렉션 반복 (Iterator)

  • 컬렉션의 요소를 순차적으로 접근할 때 사용
  • Iterator 인터페이스를 사용

Iterator 예제

import java.util.ArrayList;
import java.util.Iterator;

public class IteratorExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");

        Iterator<String> iterator = list.iterator();

        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}
📌 출력 결과:

A
B
C

🚀 7. 실습 과제

1. List 실습

  • ArrayList에 문자열을 추가하세요.
  • 모든 요소를 출력하고, 특정 요소를 삭제한 후 다시 출력하세요.
import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        // ArrayList 생성
        ArrayList<String> fruits = new ArrayList<>();

        // 요소 추가
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        // 모든 요소 출력
        System.out.println("초기 리스트: " + fruits);

        // 특정 요소 삭제
        fruits.remove("Banana");
        
        // 삭제 후 리스트 출력
        System.out.println("삭제 후 리스트: " + fruits);
    }
}

✅ 출력 결과

초기 리스트: [Apple, Banana, Cherry]
삭제 후 리스트: [Apple, Cherry]

2. Set 실습

  • HashSet에 정수를 추가하세요.
  • 중복된 정수를 추가해보고 결과를 확인하세요.
import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        // HashSet 생성
        HashSet<Integer> numbers = new HashSet<>();

        // 요소 추가
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(2); // 중복된 요소 추가

        // 모든 요소 출력
        System.out.println("HashSet 요소: " + numbers);
    }
}
✅ 출력 결과

HashSet 요소: [1, 2, 3]

📌 설명:
HashSet은 중복을 허용하지 않기 때문에 중복된 숫자 2는 추가되지 않았습니다.

3. Map 실습

  • HashMap에 학생 이름과 점수를 추가하세요.
  • 특정 학생의 점수를 출력하고, 모든 데이터를 반복문으로 출력하세요.
import java.util.HashMap;

public class MapExample {
    public static void main(String[] args) {
        // HashMap 생성
        HashMap<String, Integer> studentScores = new HashMap<>();

        // 학생 이름과 점수 추가
        studentScores.put("Alice", 85);
        studentScores.put("Bob", 90);
        studentScores.put("Charlie", 75);

        // 특정 학생의 점수 출력
        System.out.println("Bob의 점수: " + studentScores.get("Bob"));

        // 모든 데이터 출력
        System.out.println("모든 학생의 점수:");
        for (String key : studentScores.keySet()) {
            System.out.println(key + ": " + studentScores.get(key));
        }
    }
}

✅ 출력 결과

Bob의 점수: 90
모든 학생의 점수:
Alice: 85
Bob: 90
Charlie: 75

🚀 4. 실습 정리

문제 유형 컬렉션 사용 핵심 포인트
List 실습 ArrayList 순서 유지, 중복 허용
Set 실습 HashSet 중복 불가, 순서 보장 안됨
Map 실습 HashMap 키-값 쌍 저장, 키 중복 불가

  1. ArrayList
    • 순서가 있는 데이터를 저장하고 수정, 삭제할 수 있습니다.
  2. HashSet
    • 중복을 허용하지 않는 데이터 집합입니다.
  3. HashMap
    • 키-값 쌍으로 데이터를 저장하며, 키를 통해 값을 빠르게 검색할 수 있습니다.

🎯 8. 학습 목표

  1. List, Set, Map의 차이점을 이해한다.
  2. ArrayList, HashSet, HashMap을 사용할 수 있다.
  3. 컬렉션을 반복하고 조작할 수 있다.
  4. 다양한 상황에 맞는 컬렉션을 선택하여 사용할 수 있다.

다음 강의 예고: 10강 - 파일 입출력 (File I/O)

다음 강의에서는 **자바 파일 입출력(File I/O)**을 학습합니다. 😊

LIST