[List, Map, Set]의 차이점

Jun_Gyu·2023년 3월 22일
0

JAVA Collection Framework의 상속 기본 구조

기존에는 많은 데일터들을 처리하기 위해서 배열을 사용했었다. 하지만, 크기가 정적으로 고정되어 있고, 삽입 및 삭제에 시간이 오래 걸린다는 불편한 점이 존재했다.

이를 개선하기 위해서 Java에서 컬렉션 프레임워크를 제공하였으며, 대표적으로 List, Map, Set이 있다. 이로 인하여 데이터의 Insert, Select, Delete 등이 용이해졌고, 어떠한 자료형도 담을 수 있게 되었으며, 크기또한 자유롭게 늘어나게 되어 많은 사람들에게 유용하게 사용되고 있다.

List

  • 순서가 있으며, 중복을 허용한다.
  • index로 원소에 접근이 가능하다.
  • 크기가 가변적이다.

List의 종류와 특징

  • LinkedList

    • 양방향 포인터 구조로 데이터를 삽입한다.
    • 삭제가 빠르다.
    • ArrayList보다 검색이 느리다.

  • ArrayList

    • 단방향 포인터 구조로 데이터 순차적 접근의 강점이 있다.
    • 배열을 기반으로 데이터를 저장한다.
    • 데이터 삽입, 삭제가 느리다.
    • 데이터 검색이 빠르다.

Map

Key와 Value의 값으로 이루어지는 데이터들의 집합으로, Key에 대한 중복이 없으며, 순서를 보장하지 않는다.

또한 뛰어난 검색속도를 가지며, 인덱스가 따로 존재하지 않게 때문에 iterator를 사용한다.

Map의 종류와 특징

  • HashMap

    • Key에 대한 중복이 없으며 순서를 보장하지 않는다.
    • Key와 Value 값으로 NULL을 허용한다.
    • 동기화가 보장되지 않는다.
    • 검색에 가장 뛰어난 성능을 가진다.
  • HashTable

    • 동기화가 보장되어 병렬 프로그래밍이 가능하고, HashMap보다 처리속도가 느리다.
    • Key와 Value값으로 NULL을 허용하지 않는다.
  • LinkedHashMap

    • 입력된 순서를 보장한다.
  • TreeMap

    • 이진 탐색 트리(Red-Black Tree)를 기반으로 키와 값을 저장한다.
    • Key 값을 기준으로 오름차순 정렬되고 빠른 검색이 가능하다.
    • 저장 시 정렬을 하기 때문에 시간이 다소 오래 걸린다.

    Set

    데이터의 집합이며, 순서가 없고 중복된 데이터를 허용하지 않는다.
    Map 방식과 마찬가지로 뛰어난 검색속도를 가지며, 인덱스가 따로 없기때문에 iterator를 사용한다.

    Set의 종류와 특징

  • HashSet

    • 인스턴스의 해시값을 기준으로 저장하기 때문에 순서를 보장하지 않는다.
    • NULL 값을 허용한다.
    • TreeSet보다 삽입, 삭제가 빠르다.
  • LinkedHashSet

    • 입력된 순서를 보장한다.

    -TreeSet

    • 이진 탐색 트리(Red-Black Tree)를 기반으로 한다.
    • 데이터들이 오름차순으로 정렬된다.
    • 데이터의 삽입과 삭제에는 시간이 걸리지만, 검색과 정렬이 빠르다는 특징이 있다.

요약

List는 기본적으로 데이터들이 순서대로 저장되며 중복을 허용한다.

Map은 순서가 보장되지 않고, Key값의 중복은 허용하지 않지만, Value값의 중복은 허용된다.

Set은 순서가 보장되지 않고, 데이터들의 중복을 허용하지 않는다.



profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글