본문 바로가기
프로그래밍 언어/JAVA

JAVA - 컬렉션 종류

by DGDD(Developer) 2024. 6. 21.

컬렉션(Collection) 이란?

  • 컬렉션(Collection)이란 여러 개의 데이터를 저장하고 관리하는 객체를 말합니다. 자바의 컬렉션 프레임워크는 이러한 데이터를 다루기 위한 표준화된 API를 제공합니다. 이를 통해 다양한 데이터 구조와 알고리즘을 손쉽게 구현할 수 있습니다. 자바의 컬렉션 프레임워크는 주로 java.util 패키지에 포함되어 있습니다.

컬렉션의 주요 인터페이스

  1. List 
    • 정의 : 순서가 있는 요소의 컬렉션으로, 중복을 허용한다.
    • 주요 구현 클래스 : ArrayList, LinkedList, Vector, Stack
    • 특징 : 인덱스를 사용하여 요소에 접근할 수 있으며, 삽입 순서가 유지된다.
  2. Set
    • 정의 : 순서가 없고 중복을 허용하지 않은 요소의 컬렉션
    • 주요 구현 클래스 : HashSet, LinkedHashSet, TreeSet
    • 특징 : 요소의 유일성을 보장하며, 특정 구현에 따라 순서가 유지되거나 정렬된다.
  3. Queue
    • 정의 : 요소를 처리하는 순서를 정의하는 컬렉션(FIFO)
    • 주요 구현 클래스 : LinkedList, PriorityQueue, ArrayDeque
    • 특징 : 큐는 주로 데이터를 일시적으로 저장하고 처리하는 데 사용한다.
  4. Deque
    • 정의 : 양쪽 끝에서 요소를 추가하거나 제거할 수 있는 컬렉션
    • 주요 구현 클래스 : ArrayDeque, LinkedList
    • 특징 : 큐의 특성을 확장하여 양 끝에서의 삽입 및 삭제를 지원한다.
  5. Map
    • 정의 : 키-값 쌍으로 요소를 저장하는 컬렉션
    • 주요 구현 클래스 : HashMap, LinkedHashMap, TreeMap, HashTable
    • 특징 : 키는 중복을 허용하지 않으며, 각 키는 하나의 값과 연결된다.

위 주요 인터페이스로 구현된 클래스에 대해서 살펴보겠다.

 

주요 컬렉션 구현 클래스

  1. List 구현 클래스
    • ArrayList
      • 설명 : 내부적으로 배열을 사용하여 요소를 저장한다.
      • 장점 : 요소의 접근 속도가 빠르다.
      • 단점 : 중간에 요소를 삽입하거나 삭제하는 작업이 비효율적이다.
    • LinkedList
      • 설명 :이중 연결 리스트를 사용하여 요소를 저장한다.
      • 장점 : 삽입과 삭제가 빠르다.
      • 단점 : 요소의 접근 속도가 느리다.
    • Vector
      •  설명 : ArrayList와 유사하지만, 동기화되어 멀티스레드 환경에서 안전하다.
    • Stack
      •  설명 : 후입선출(LIFO) 구조의 컬렉션으로, Vector 클래스를 확장하여 구현했다.
  2. Set 구현 클래스
    • HashSet
      •  설명 : 해시 테이블을 사용하여 요소를 빠르게 저장한다.
      •  장점 : 빠른 검색 속도를 제공한다.
      •  단점 : 순서를 보장하지 않는다.
    • LinkedHashSet
      •  설명 : 해시 테이블과 연결 리스트를 사용하여 요소를 저장한다.
      •  장점 : 삽입 순서를 유지한다.
    • TreeSet
      •  설명 : 이진 검색 트리를 사용하여 요소를 저장한다.
      •  장점 : 요소가 정렬된 순서로 저장된다.
  3. Queue 구현 클래스
    • LinkedList
      •  설명 : 큐 인터페이스를 구현하며, 양쪽 끝에서 요소를 추가하거나 제거할 수 있다.
    • PriorityQueue
      •  설명 : 요소를 자연 순서나 제공된 비교자에 따라 정렬하여 저장합니다. ( 비교자에 우선권에 따라 FIFO가 아닌 동작을 할 수 있다.)
    • ArrayDeque
      •  설명 : 배열을 기반으로 하는 덱(Deque) 구현으로, 큐와 덱 기능을 모두 제공한다.
  4. Map 구현 클래스
    • HashMap
      • 설명: 해시 테이블을 사용하여 키-값 쌍을 저장한다.
      • 장점: 빠른 검색 속도를 제공한다.
      • 단점: 순서를 보장하지 않는다.
    • LinkedHashMap
      • 설명: 해시 테이블과 연결 리스트를 사용하여 키-값 쌍을 저장한다.
      • 장점: 삽입 순서를 유지한다.
    • TreeMap
      • 설명: 이진 검색 트리를 사용하여 키-값 쌍을 저장한다.
      • 장점: 키가 정렬된 순서로 저장한다.
    • Hashtable
      • 설명: 해시 테이블을 사용하여 키-값 쌍을 저장한다.
      • 장점: 동기화되어 멀티스레드 환경에서 안전하다.
      • 단점: null 키와 값을 허용하지 않는다.

각 구현 클래스에 대한 자세한 사용방법 및 예시는 추후에 다뤄보도록 하겠습니다.

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

JAVA - 컬렉션 Set  (0) 2024.06.24
JAVA - 컬렉션 List  (0) 2024.06.21
JAVA - 배열(Array) 와 컬렉션 (Collection)의 차이점  (0) 2024.06.21
JAVA - I/O 와 NIO 차이  (0) 2024.06.21
JAVA - 배열 복사하기  (2) 2024.03.15