Language/Java

[Java] 컬렉션(Collection)

마볼링 2022. 6. 25. 22:32

컬렉션(Collection)

  • 데이터의 집합, 그룹
  • 장점
    • 일괄된 API : Collection의 일관된 API를 사용하여 Collection 밑에 있는 모든 클래스는 Collection에서 상속받아 통일된 메서드 사용
    • 프로그래밍 노력 감소 : 객체 지향 프로그래밍의 추상화의 기본 개념이 성공적으로 구현
    • 유용한 데이터 구조 및 알고리즘 성능 향상

Collection 인터페이스에 선언된 주요 메서드

List

  • 순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.
  • 종류
    • LinkedList
      • 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용
      • 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임
    • Stack
      • 스택 클래스 모델 및 스택 데이터 구조를 구현할 때 주로 사용
      • 후입선출을 기본 원칙으로 한다.
    • Vector
      • 동적 배열을 제공하고, 표준 배열보다 느리지만 많은 움직임이 필요한 프로그램에서 유용
      • ArrayList와 유사하지만 자동으로 동기화가 된다는 차이점이 있음
      • 과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않음
    • ArrayList
      • 동적 배열을 제공하고, 표준 배열보다 느리지만 많은 움직임이 필요한 프로그램에서 유용
      • 컬렉션에서 개체를 추가, 삭제하면 ArrayList의 크기가 자동으로 조정
      • 단반향 포인터 구조로 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남

Set

  • 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
  • 종류
    • HashSet
      • 가장빠른 접근속도
      • 동일한 순서로 삽입되는 것을 보장하지않음
      • NULL 요소 삽입 허용
    • LinkedHashSet
      • HashSet과 유사하지만 차이점은 데이터를 저장하는 순서를 유지합니다
    • TreeSet
      • Tree를 사용하여 저장
      • 데이터의 순서는 오름차순

Map

  • 키(Key) - 값(Value)의 쌍으로 이루어진 데이터의 집합
  • 순서는 유지되지 않으며 키(Ket)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다
  • 종류
    • Hashtable
      • HashMap보다는 느리지만 동기화 지원
      • NULL 요소 삽입 불가
    • HashMap
      • 중복과 순서가 허용되지 않음
      • NULL 요소 삽입 허용
    • TreeMap
      • 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름