관리 메뉴

제뉴어리의 모든것

컬렉션 프레임워크란? 본문

JAVA

컬렉션 프레임워크란?

제뉴어리맨 2023. 5. 14. 15:22

컬렉션 프레임워크란?

대량의 데이터를 공통된 인터페이스로 효율적으로 관리하기 위해 만들어진 자료구조를 구현한 클래스들의 집합체.

 

 

구분 종류 중복 허용 순서 존재  정렬 여부 THREAD-SAFE
LIST ArrayList O O X X
LinkedList O O X X
Vector O O X O
SET HashSet X X X X
Linked
HashSet
X O X X
TreeSet X X O X
MAP HashMap X X X X
Linked
HashMap
X O X X
Hashtable X X X O
TreeMap X X O X

 

  • List는 데이터의 중복이 가능학고, 순서가 존재하는 자료구조
    • ArrayList :
      • 내부적으로 배열이 사용 됨.
      • 기본 공간 10으로 시작하여 더 필요할 경우 더큰 배열을 생성하여 데이터들을 옮김.
      • 중간 데이터 삽입, 삭제할 경우 데이터들을 당기고 밀어야 하기 때문에 느림 (O(N)) 
      • 사용 시점
        - 대량의 데이터를 연속적으로 쌓을때 유리함.
        - 연속된 데이터를 대량으로 읽어들이때 유리함.
        - 인덱스로 인한 데이터 접근이 필요한 경우 빠름.
    • LinkedList :
      • 데이터의 중간 삽입, 삭제에 유리함. (각 노드의 연결관계만 끊어 주면 됨)
      • 특정 위치에 데이터를 조회할 경우 해당 노드까지 전 노드들을 모두 읽어야 하기 때문에 느림 (O(N))
      • 실제 데이터 저장 공간 이외의 연결 노드 데이터들까지 가지고 있어야 하므로 공간적 낭비
      • 사용 시점
        - 중간 데이터의 조회 및 삭제가 빈번한 경우
    • Vector :
      • ArrayList와 거의 비슷한 자료구조, 하지만 ArrayList와 달리 thread-safe 하다.
      • get, put 메소드에 모두 syncronized 걸려있어서 동시 접근시 lock 걸림
      • ArrayList에 비해 성능적으로 뒤쳐짐.
      • 사용 시점
        - ArrayList에 비해 잘 사용되지 않음
    • Stack :
      • LIFO 구조. 마지막 들어온 것이 먼저 나간다
  • Set은 데이터의 중복이 불가능하고, 순서가 존재하지 않는 자료구조
    • HashSet :
      • HashSet은 객체를 저장하기 전에 객체의 hashCode() 메소드를 호출한다. 그리고 현재 Set에 저장 되어있는 각 요소들의 hash코드값과 비교하여 같다면 다시한번 equals() 메소드로 비교하여 그래도 같다면 동일한 객체가 존재하는것으로 여긴다.
    • LinkedHashSet :
      • 중복은 허용하지 않지만, 순서를 가진다
    • TreeSet
      • 중복은 허용하지 않고, 순서를 가지지 않는다. 그러나 정렬되어 있음(기본값은 오름차순)
      • null 저장 가능
      • 이진탐색트리(레드-블랙 트리)를 사용하여 구현한다. 해싱보다는 느리다
  • Queue는 FIFO 구조를 가짐
    • priorityQueue는 우선순위를 가지는 큐임. 그러므로 우선순위가 높은 요소를 우선적으로 반환함.
    • Dequeue 는 양쪽으로 모두 enqueue, dequeue가 가능한 큐

 

  • Map은 Key와 Value 한 쌍의 구조를 이루는 자료구조.
    • HashMap
      • 순서는 존재하지 않으며, 키는 중복 불가, 값은 중복 가능하다
      • key와 value에 null을 허용
      • 동기화 보장 X
    • HashTable :
      • HashMap과 동일하지만, Thread-safe하여 동기화 지원
    • LinkedHashMap
      • 들어 온 순서대로 순서를 가지는 Map
    • TreeMap
      • Key를 기준으로 정렬되어 저장되는 Map

 

 

 


참조 :

https://devlopsquare.tistory.com/239

 

[Java]컬렉션(Collections) 정리

컬렉션 프레임워크 란? 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 자료구조와 알고리즘을 구조화 하여 클래스로 구현해 놓은 것

devlopsquare.tistory.com

https://crazykim2.tistory.com/474