코딩/Java

JAVA 컬렉션 프레임워크(Collection Framewrok)

로밋코딩 2024. 10. 31. 15:25
반응형

컬렉션 프레임워크의 주요 개념

컬렉션 프레임워크는 데이터 그룹을 관리하는 여러 인터페이스와 클래스의 집합입니다. 다음은 주요 구성 요소입니다.

  • Collection 인터페이스: 데이터의 집합을 표현하는 인터페이스로, List, Set, Queue 인터페이스의 부모입니다.
  • List 인터페이스: 순서가 있는 데이터 집합을 다루며, 중복 요소를 허용합니다.
  • Set 인터페이스: 중복을 허용하지 않는 집합을 다루며, 순서를 보장하지 않습니다.
  • Map 인터페이스: 키-값 쌍으로 이루어진 데이터를 저장하며, 키는 고유해야 합니다.
  • 제네릭(Generic): 컬렉션에 저장할 데이터 타입을 지정하여 타입 안전성을 보장합니다.

1. List 인터페이스와 구현 클래스

List는 순서가 있는 데이터 집합을 다루며 중복 요소를 허용합니다. List 인터페이스를 구현하는 주요 클래스는 다음과 같습니다.

ArrayList

  • 특징: 동적 배열로 구현된 리스트로, 인덱스를 통해 빠른 조회와 순차적인 삽입 및 삭제가 가능합니다.
  • 장점: 조회 속도가 빠르고, 동적으로 크기가 조정됩니다.
  • 단점: 중간에 데이터를 삽입하거나 삭제할 때는 성능이 떨어질 수 있습니다.

Vector

  • 특징: ArrayList와 비슷하지만, 멀티스레드 환경을 위해 동기화 처리가 되어 있어 쓰레드에 안전합니다.
  • 장점: 동기화 처리가 되어 있어 멀티스레드 환경에서 안전하게 사용할 수 있습니다.
  • 단점: 동기화로 인해 ArrayList보다 성능이 떨어질 수 있습니다.

LinkedList

  • 특징: 노드 기반으로 연결된 리스트로, List와 Queue 인터페이스를 모두 구현하여, 양방향 링크를 통해 데이터 삽입, 삭제가 빠릅니다.
  • 장점: 중간에 데이터 삽입/삭제가 자주 발생하는 경우에 효율적입니다.
  • 단점: 인덱스를 통한 접근이 느리며, 추가 메모리 공간이 필요합니다.

2. Set 인터페이스와 구현 클래스

Set은 중복을 허용하지 않는 데이터 집합을 다룹니다. 순서가 보장되지 않는 것이 일반적이며, 주요 구현 클래스는 다음과 같습니다.

HashSet

  • 특징: 해시 테이블을 기반으로 한 Set으로, 순서가 보장되지 않으며 빠른 접근과 삽입을 제공합니다.
  • 장점: 검색과 삽입이 매우 빠릅니다.
  • 단점: 순서를 보장하지 않으며, null 값을 하나만 허용합니다.

TreeSet

  • 특징: 이진 트리를 기반으로 정렬된 순서로 데이터를 저장하는 Set입니다.
  • 장점: 자동으로 정렬이 되며, 범위 검색과 순차적인 접근이 가능합니다.
  • 단점: 삽입과 삭제가 다소 느릴 수 있으며, null 값을 허용하지 않습니다.

3. Map 인터페이스와 구현 클래스

Map은 키-값 쌍으로 데이터를 저장하며, 키는 고유해야 합니다. Map 인터페이스를 구현하는 주요 클래스는 다음과 같습니다.

HashMap

  • 특징: 해시 테이블을 사용하여 키-값 쌍을 저장하며, 순서를 보장하지 않습니다.
  • 장점: 검색 및 삽입이 빠르며, null 키와 값을 허용합니다.
  • 단점: 동기화 처리가 되어 있지 않아 멀티스레드 환경에서는 안전하지 않습니다.

Hashtable

  • 특징: HashMap과 유사하지만, 모든 메소드가 동기화되어 멀티스레드 환경에서 안전하게 사용할 수 있습니다.
  • 장점: 멀티스레드 환경에서 안전하게 사용할 수 있습니다.
  • 단점: 성능이 떨어질 수 있으며, null 키와 값을 허용하지 않습니다.

TreeMap

  • 특징: 이진 트리 구조로 키를 정렬하여 저장하는 Map으로, 정렬된 순서로 키와 값을 저장합니다.
  • 장점: 키의 정렬을 유지하며 범위 검색에 유리합니다.
  • 단점: 삽입과 삭제가 다소 느릴 수 있으며, null 키를 허용하지 않습니다.

Properties

  • 특징: Hashtable을 상속한 클래스로, 문자열 키와 문자열 값을 저장하는 데 사용됩니다. 주로 설정 파일을 다루는 데 사용됩니다.
  • 장점: 파일 입출력과 함께 사용하기 쉬워 설정 값을 관리할 때 유용합니다.
  • 단점: 키와 값을 문자열로만 저장할 수 있습니다.

요약표

인터페이스구현 클래스 특징 장점과 단점

List ArrayList 동적 배열 조회가 빠름 중간 삽입/삭제가 느림
  Vector 동적 배열, 동기화 멀티스레드 안전 성능이 다소 떨어짐
  LinkedList 노드 기반, 양방향 연결 삽입/삭제 빠름 접근 속도가 느림
Set HashSet 해시 테이블 기반 삽입/검색 빠름 순서 보장 안됨
  TreeSet 이진 트리 기반, 정렬 자동 정렬 삽입/삭제 속도 느림
Map HashMap 해시 테이블 기반 삽입/검색 빠름, null 허용 비동기
  Hashtable 동기화된 해시 테이블 멀티스레드 안전 null 허용 안됨
  TreeMap 이진 트리 기반, 정렬 자동 정렬 null 키 허용 안됨
  Properties 설정 파일 관리 파일 입출력 쉬움 문자열만 저장 가능

 

반응형