[자료구조] 컬렉션 프레임워크 - List, Set, Map

김민규·2021년 9월 14일
5

자료구조

목록 보기
1/1
post-custom-banner

컬렉션 프레임워크

1) 컬렉션 프레임워크란?

  • 대량의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합
  • 데이터를 처리하는 알고리즘과 데이터를 저장하는 자료구조를 구조화하여 클래스로 구현한 것
  • 데이터를 저장하는 자료 구조에 따라 List Interface, Set Interface, Map Interface로 나누어짐

2) 컬렉션 프레임워크를 사용하는 이유

  • 기존에는 많은 데이터들을 처리할 때에 배열을 사용했지만 그 크기가 고정되어 있고 삽입/삭제를 자주할 경우 성능이 저하되는 단점이 있었음
  • 따라서 이것을 보완하기 위해 동적 배열의 개념을 탑재한 컬렉션 프레임워크를 제공하였음
  • 이로 인해 자료의 삽입/검색/삭제에 의한 성능의 저하와 같은 단점이 해소되었음
  • 자료형에 구애받지 않고 담을 수 있으며 크기가 동적으로 조절된다는 장점이 있음

1. List

1) 특징

  • 순서가 있는 데이터의 집합
  • 데이터의 중복을 허용함

2) 종류

  • ArrayList
    » 객체 내부에 있는 배열에 데이터를 저장
    » 속도가 빠르고 크기를 마음대로 조절이 가능
    » 단방향 포인터 구조로 자료에 대한 순차적인 접근이 가능
    » 동기화를 보장하지 않기 때문에 가벼움
  • LinkedList
    » Node와 Pointer를 이용한 리스트
    » 양방향 포인터 구조로 데이터의 삽입, 삭제가 잦을 경우에 효율적
    » 스택, 큐, 양방향 큐 등에 사용됨
  • Vector
    » ArrayList와 동일하게 사용이 가능한 리스트로, 동기화 여부의 차이가 있음
    » 동기화를 보장함(ArrayList와 반대)
  • Stack
    » LIFO, 제일 마지막에 추가된 데이터가 가장 먼저 꺼내지는 자료구조

2. Set

1) 특징

  • 순서를 유지하지 않는 데이터의 집합
  • 데이터의 중복을 허용하지 않음

2) 종류

  • HashSet
    » 무작위로 값을 담는 Set(순서를 가지지 않음)
    » 효율이 좋음
  • LinkedHashSet
    » 넣은 순서대로 값을 담는 Set(순서를 가짐)
  • TreeSet
    » 자동정렬을 수행함으로써 값을 담는 Set(순서를 가지지 않음)
    » 가장 바쁜 Set

3. Queue

1) 특징

  • FIFO 구조를 가짐
  • 들어올때는 enqueue, 나갈때는 dequeue라고 함

2) 종류

  • PriorityQueue
    » 우선순위를 가지는 큐로 원소에 우선순위를 부여하여 높은순으로 먼저 반환함
    » 이진트리 구조로 구현되어 있음
  • ArrayDeque
    » 양쪽으로 삽입/삭제가 가능한 큐 자료구조

4. Map

1) 특징

  • Key & Value로 이루어진 데이터의 집합
  • 순서를 유지하지 않음
  • Key는 중복을 허용하지 않음
  • Value는 중복을 허용함

2) 종류

  • HashMap
    » Key & Value가 무작위로 담기는 Map(순서를 가지지 않음)
  • LinkedMap
    » Key & Value가 넣는 순서대로 담기는 Map(순서를 가짐)
  • TreeMap
    » Key 값에 의해 정렬이 되는 Map(순서를 가지지 않음)

List, Set, Map 차이점

1) List / Set 차이점

  • List는 순서가 있는 Collection이기 때문에 데이터를 넣는 순서가 보장되어 Index로 특정 아이템을 가져올 수 있지만 Set은 데이터를 넣는 순서가 보장되지 않아 불가능함
  • List는 중복을 허용하지만, Set은 중복을 허용하지 않음

2) List / Map 차이점

  • List는 순서가 있지만, Map은 순서가 없음
  • Map은 Key, Value값을 저장함

3) Set / Map 차이점

  • Set은 데이터 중복을 허용하지 않지만, Map은 Key 중복은 허용하지 않고, Value 중복은 허용함

profile
키보드를 좋아합니다.
post-custom-banner

3개의 댓글

comment-user-thumbnail
2021년 9월 14일

이해하기 쉽게 정리되어 있네요! 감사합니댜 :D

답글 달기
comment-user-thumbnail
2021년 9월 24일

잘 읽었습니다. Map은 Key 중복은 허용, Value 중복은 허용하지 않음 이 부분은 반대로 적으신 것 같아요~

1개의 답글