alt text

컬렉션(Collection)은 데이터를 효율적으로 저장하고 관리하기 위해 자바에서 제공하는 참조형 자료형입니다. 이 글에서는 List, Set, 그리고 Iterator의 활용법을 정리합니다.

1. List

List는 순서가 있는 데이터의 집합으로, 중복을 허용합니다. 대표적인 구현체로는 ArrayList, LinkedList, 그리고 Vector가 있습니다.

1.1 ArrayList

  • 특징:
    • 배열 기반으로 구현되어, 데이터 접근 속도가 빠름.
    • 크기가 동적으로 조정됨.
import java.util.ArrayList;

class ArrayListExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("사과");
        list.add("바나나");
        list.add("체리");

        for (String item : list) {
            System.out.println(item);
        }
    }
}

출력:

사과
바나나
체리

1.2 LinkedList

  • 특징:
    • 노드(앞 요소의 값과 뒤 요소의 주소값이 연결) 기반으로 구현되어, 삽입과 삭제가 빠름.
    • 순차 접근에 적합.
import java.util.LinkedList;

class LinkedListExample {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("봄");
        list.add("여름");
        list.add("가을");

        list.addFirst("겨울");
        for (String season : list) {
            System.out.println(season);
        }
    }
}

출력:

겨울
봄
여름
가을

1.3 Vector

  • 특징:
    • 동기화된(synchronized) 리스트 구조로, 멀티스레드 환경에서 안전하게 사용할 수 있음.
    • 크기가 동적으로 조정됨.
import java.util.Vector;

class VectorExample {
    public static void main(String[] args) {
        Vector<String> vector = new Vector<>();
        vector.add("첫 번째 값");
        vector.add("두 번째 값");

        for (String value : vector) {
            System.out.println(value);
        }
    }
}

출력:

첫 번째 값
두 번째 값

2. Set

Set은 중복을 허용하지 않는 데이터의 집합입니다. 대표적인 구현체로는 HashSetTreeSet이 있습니다.

2.1 HashSet

  • 특징:
    • 해시 테이블(“Key: Value” 값의 쌍) 기반으로 구현되어, 데이터 저장과 검색 속도가 빠름.
    • 순서를 보장하지 않음.
import java.util.HashSet;

class HashSetExample {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("고양이");
        set.add("강아지");
        set.add("고양이"); // 중복된 항목

        for (String animal : set) {
            System.out.println(animal);
        }
    }
}

출력:

고양이
강아지

(순서는 실행 환경에 따라 달라질 수 있습니다.)

2.2 TreeSet

  • 특징:
    • 이진 트리 기반으로 구현되어, 데이터가 정렬된 상태로 저장됨.
    • 중복을 허용하지 않음.
import java.util.TreeSet;

class TreeSetExample {
    public static void main(String[] args) {
        TreeSet<Integer> set = new TreeSet<>();
        set.add(10);
        set.add(5);
        set.add(20);

        for (Integer number : set) {
            System.out.println(number);
        }
    }
}

출력:

5
10
20

3. Iterator와의 응용

Iterator는 컬렉션에 저장된 데이터를 순차적으로 접근할 수 있는 객체입니다.

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

class IteratorExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("첫 번째");
        list.add("두 번째");
        list.add("세 번째");

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

출력:

첫 번째
두 번째
세 번째

4. 결론

컬렉션은 배열과 달리 가변적인 데이터를 효율적으로 관리하고 처리하는 데 필수적인 도구입니다. 이 글에서 살펴본 List, Set, 그리고 Iterator의 특징과 예제를 바탕으로 적절한 자료구조를 선택하여 프로젝트에 활용해본다면 더 많은 문제와 요구사항들을 해결할 수 있을 것입니다.