[JAVA]컬렉션 프레임워크(Collections Framework)

2023. 1. 15. 21:21Java




1. 컬렉션 프레임워크(Collections Framework)

1-1. 정의

컬렉션 프레임워크란, '데이터 군을 저장하는 클래스들을 표준화한 설계'를 뜻한다.
JDK1.2부터 등장했으며, 컬렉션을 다루는 데 필요한 다양한 컬렉션 클래스들을 제공한다.

더보기
  • 컬렉션(Collection) : 다수의 데이터, 데이터 그룹
  • 프레임워크(Framework) : 표준화된 프로그래밍


1-2. 컬렉션 프레임워크의 장점

컬렉션 프레임워크의 장점으로는 다음이 있다.
더 많은 장점에 대해서는 Collections Framework Overview에서 확인가능하다.

  • 가변적인 저장 공간을 제공(배열의 단점을 보완)
    • 배열은 고정적인 저장 공간을 제공하기에 정해진 크기를 넘어가는 데이터를 저장할 수 없다
    • 배열은 데이터가 비어있으면 메모리가 낭비된다
    • 컬렉션은 데이터가 추가 및 제거될 때 자동적으로 크기가 늘어나고 줄어든다
  • 프로그래밍 작업 감소
    • 이미 구현된 컬렉션 클래스를 목적에 맞게 선택하여 사용하기만 하면 된다
  • 성능 향상


1-3. 구성요소

  • 인터페이스(interfaces)
    • 각 컬렉션을 나타내는 추상 데이터에 대한 인터페이스(List, Set, Map 등)
  • 클래스(classes)
    • 컬렉션 별 인터페이스의 구현
    • 같은 컬렉션(ex - List)이더라도 목적에 따라 상세 구현(ArrayList, LinkedList, ...)이 달라질 수 있다
    • 상세 구현이 다르더라도 일관된 조작법으로 사용가능하다
  • 알고리즘(algorithms) 
    • 컬렉션이 제공하는 연산, 검색, 정렬, 셔플 등에 대한 메서드


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


2-1. 컬렉션 인터페이스의 구분

컬렉션 인터페이스는 List, Queue, Set, Map 인터페이스로 구성된다.
이 중, List와 Queue, Set의 공통된 부분을 Collection 인터페이스로 정의했다.
Map은 구조상 특징이 달라 Collection 인터페이스를 상속받지 않는다.

더보기

※ 컬렉션 프레임워크의 모든 컬렉션 클래스들은 List, Set, Map 중 하나를 구현한다

∵ Queue는 인터페이스가 존재하나, 직접 구현된 클래스는 존재하지 않는다.

즉, Queue는 LinkedList를 사용하여 구현된다.



2-2. 주요 컬렉션 인터페이스의 특징




2-3. Collection 인터페이스

Collection 인터페이스에는 컬렉션 클래스에 저장된 데이터를 다루는 데 가장 기본적인 메서드들이 정의되어 있다.

더보기

※ 실제로는 Object가 아니라 'E'로 표기되어 있는데, E는 특정 타입을 의미하는 것으로 지네릭스에 의한 표기이다.

지네릭스에 관해서는 후에 정리한다.



2-4. List 인터페이스

특징

  • 중복을 허용
  • 저장순서가 유지
  • 동적 크기를 가지며 배열처럼 사용 가능(LinkedList는 예외로 연결 기반)


메서드


List 구현 클래스

  • ArrayList
  • LinkedList
  • Vector
  • Stack




2-5. Queue 인터페이스

특징

  • Queue는 기본적으로 한쪽 방향으로만 삽입, 삭제 가능(선입선출(FIFO))
  • Deque는 양쪽에서 삽입과 삭제가 동시에 가능


Queue 메서드



Deque 메서드


Queue, Deque 구현 클래스

  • LinkedList
  • ArrayDeque
  • PriorityQueue





2-6. Set 인터페이스



특징

  • 중복을 허용하지 않음
  • 저장 순서 유지되지 않음(단, LinkedHashSet은 저장 순서 유지)



메서드


Set 구현 클래스

  • HashSet
  • LinkedHashSet
  • TreeSet



2-7. Map 인터페이스


특징

  • 키(key)와 값(value)를 하나의 쌍으로 묶어서 저장
  • 키는 중복 불가능
  • 값은 중복 허용


메서드



Map 구현 클래스

  • HashMap
  • Hashtable
  • TreeMap
  • ConcurrentHashMap





참고자료
자바의 정석(3rd Edition) - 도우출판
https://ssdragon.tistory.com/20
https://catsbi.oopy.io/8f0f5192-3a06-405e-8076-dbc5ff9f2dfb
https://hudi.blog/java-collection-framework-1/