자료구조

[자료구조] - 자바 Collection

Jaemin0604 2024. 7. 19. 17:50

컬렉션(Collection)

  • 데이터 집합, 그룹을 의미

자바 컬렉션

1. 컬렉션 인터페이스 (Collection Interface)

  • Collection 인터페이스는 Java의 컬렉션 프레임워크의 루트 인터페이스로, 데이터를 그룹화하는 기본적인 기능들을 정의
  • Collection 인터페이스는 여러 구체적인 인터페이스들로 확장되며, 각각의 특성과 목적에 따라 다양한 구현 클래스를 제공

2. List 인터페이스 (Ordered Collection)

List 인터페이스는 순서가 있는 컬렉션을 나타내며, 요소의 중복을 허용

인덱스를 사용하여 요소에 접근할 수 있다.

  • ArrayList: 동적 배열로 구현된 리스트. 빠른 임의 접근과 요소 추가/삭제가 가능하지만, 배열 크기 변경 시 성능 저하가 발생할 수 있다.
List<String> arrayList = new ArrayList<>();
  • LinkedList: 이중 연결 리스트로 구현된 리스트. 요소 추가/삭제가 빠르지만, 임의 접근 속도가 느림
List<String> linkedList = new LinkedList<>();
  • Vector: 동기화된 동적 배열로, ArrayList와 비슷하지만 스레드 안전을 보장. 그러나 성능이 다소 느릴 수 있다.
List<String> vector = new Vector<>();
  • Stack: Vector를 확장하여 LIFO(Last In, First Out) 구조를 구현한 클래스
Stack<String> stack = new Stack<>();

3. Set 인터페이스 (Unique Elements)

Set 인터페이스는 중복을 허용하지 않는 컬렉션

순서가 보장되지 않는 경우가 많다.

  • HashSet: 해시 테이블을 기반으로 하는 집합. 요소의 순서를 보장하지 않는다.
Set<String> hashSet = new HashSet<>();
  • LinkedHashSet: 해시 테이블과 연결 리스트를 결합하여 요소의 삽입 순서를 유지하는 집합.
Set<String> linkedHashSet = new LinkedHashSet<>();
  • TreeSet: 이진 검색 트리를 기반으로 하는 집합. 요소가 정렬된 순서로 저장
Set<String> treeSet = new TreeSet<>();

4. Queue 인터페이스 (FIFO Structure)

Queue 인터페이스는 선입선출(FIFO) 방식을 따르는 컬렉션을 나타냅니다. 주요 구현 클래스는 다음과 같습니다:

  • PriorityQueue: 요소의 자연 순서나 사용자 정의 순서에 따라 요소를 정렬하는 큐.
Queue<Integer> priorityQueue = new PriorityQueue<>();
  • LinkedList: Deque 인터페이스를 구현하여 큐로도 사용할 수 있습니다.
Queue<String> linkedListQueue = new LinkedList<>();
  • ArrayDeque: Deque 인터페이스의 배열 기반 구현으로, 양방향 큐를 지원합니다.
Deque<String> arrayDeque = new ArrayDeque<>();

5. Map 인터페이스 (Key-Value Pairs)

Map 인터페이스는 키와 값의 쌍으로 이루어진 데이터를 저장하는 컬렉션

키는 중복을 허용하지 않으며, 각 키는 하나의 값에만 매핑

  • HashMap: 해시 테이블을 기반으로 하는 맵. 키의 순서를 보장하지 않는다.
Map<String, Integer> hashMap = new HashMap<>();
  • LinkedHashMap: 해시 테이블과 연결 리스트를 결합하여 삽입 순서를 유지하는 맵.
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
  • TreeMap: 이진 검색 트리를 기반으로 하는 맵. 키가 정렬된 순서로 저장
Map<String, Integer> treeMap = new TreeMap<>();
  • Hashtable: 동기화된 해시 테이블을 기반으로 하는 맵. HashMap과 비슷하지만 스레드 안전을 보장
Map<String, Integer> hashtable = new Hashtable<>();