[간단정리] List, Set, Map 특징 및 차이점(+ 구현체 )

2022. 5. 23. 14:06·개발메모/간단정리

개요

자료구조 List, Set, Map의 각각 특징 및 차이점에 대해 알아보자

 

요약

List: 순서가 있으며, 데이터(값) 중복 허용
Set: 순서가 없으며, 데이터(값) 중복을 허용하지 않음
Map: Key&Value 구조, Key는 중복을 허용하지 않으며, Value(값)는 중복을 허용

* 각각 인터페이스의 구현체별 특징까지 확인 필요!
* 포스팅된 내용외에 각 인터페이스별 다양한 구현체 존재

 

내용


Collection(컬렉션)

- Java에서 Collection(컬렉션)이란 데이터의 집합, 그룹을 의미
- JCF(Java Collection Framework)는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는

  표준화된 방법을 제공하는 클래스의 집합을 의미

 

Collection 주요 인터페이스

- List: 순서가 있으며, 데이터(값) 중복 허용
- Set: 순서가 없으며, 데이터(값) 중복을 허용하지 않음
- Map: Key&Value 구조, Key는 중복을 허용하지 않으며, Value(값)는 중복을 허용


List

- 입력 순서를 유지하며, 데이터의 중복을 허용

- 인덱스를 통해 저장 데이터에 접근이 가능

 

List 인터페이스의 주요 구현체

  - ArrayList

        - 단반향 포인터 구조 데이터 순차적 접근(조회)가 빠름

  - LinkedList

        - 양방향 포인터 구조 데이터 삽입, 삭제가 빠름


Set

- 입력 순서를 유지하지 않으며, 데이터의 중복 허용하지 않음

- 데이터에 null 입력 가능하나, 한 번만 저장하고 중복 저장을 허용하지 않음

- 인덱스가 따로 존재하지 않기 때문에 Iterator를 사용하여 조회

 

Set 인터페이스의 주요 구현체

  - HashSet

        - 입력 순서를 보장하지 않으며, 데이터의 중복을 허용하지 않음

  - LinkedHashSet

        - 입력 순서를 보장하며, 데이터의 중복을 허용하지 않음

  - TreeSet

        - (default) 입력한 데이터의 크기가 비교 가능한 경우 오름차순으로 정렬되며, 데이터의 중복을 허용하지 않음

        - 입력하는 데이터가 사용자 정의 객체인 경우 Comparable을 구현하여, 정렬 기준 설정 가능


Map

- Key&Value 구조

- Key(키)는 입력 순서를 유지하지 않으며, 중복을 허용하지 않음, Value(값)는 중복을 허용

- 인덱스가 따로 존재하지 않기 때문에 Iterator를 사용하여 조회

 

Map 인터페이스의 주요 구현체

-HashMap

        - Key(키)에 대한 입력 순서를 보장하지 않으며, 중복 Key(키)를 허용하지 않음

  - LinkedHashMap

        - Key(키)에 대한 입력 순서를 보장하며, 중복 Key(키)를 허용하지 않음

  - TreeMap

        - 레드-블랙 트리(Red-Black Tree)를 기반으로 Key&Value를 저장

        - (default) 입력한 Key(키)데이터의 크기가 비교 가능한 경우 오름차순으로 정렬되며, 중복 Key(키)를 허용하지 않음

        - 입력하는 데이터가 사용자 정의 객체인 경우 Comparable을 구현하여, 정렬 기준 설정 가능


List, Set, Map 주요 특징 정리

 

인터페이스 구현체 순서유지 중복허용 기타
List ArrayList O O  
LinkedList O O  
Set HashSet X X  
LinkedHashSet O X  
TreeSet X X 입력순서는 유지하지 않으나,
입력된 데이터에 따라 정렬되어 저장
Map HashMap X Key: X / Value: O  
LinkedHashMap O Key: X / Value: O  
TreeMap X Key: X / Value: O 입력순서는 유지하지 않으나,
입력된 Key(키)데이터에 따라 정렬되어 저장

'개발메모 > 간단정리' 카테고리의 다른 글

[간단정리] Git 이란  (0) 2022.06.16
[간단정리] 프로세스, 스레드 특징 및 차이점  (0) 2022.06.16
[간단정리] Git, SVN 특징 및 차이점  (0) 2022.06.12
[간단정리]프레임워크, 라이브러리 특징 및 차이점  (0) 2022.06.08
[간단정리] String, StringBuilder, StringBuffer 특징 및 차이  (0) 2022.06.06
'개발메모/간단정리' 카테고리의 다른 글
  • [간단정리] 프로세스, 스레드 특징 및 차이점
  • [간단정리] Git, SVN 특징 및 차이점
  • [간단정리]프레임워크, 라이브러리 특징 및 차이점
  • [간단정리] String, StringBuilder, StringBuffer 특징 및 차이
99CORN
99CORN
1990.09.17
  • 99CORN
    넌 잘하고 있어
    99CORN
  • 전체
    오늘
    어제
    • -
      • IT
        • 잔기술
        • 네트워크
        • 면접 예상 질문
      • JAVA
        • 알고리즘
        • 기타
      • PHP
        • 기초
      • C#
        • 기초
      • 개발메모
        • 간단정리
        • WEB
        • 면접준비
        • 기타
      • 블랙홀
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • forl
  • 공지사항

  • 인기 글

  • 태그

    Queue
    JDK Dynamic Proxy
    http 상태
    php 배열관련 함수
    기본문법 정리
    web
    자바
    캐시스탬피드
    선택정렬
    https status code
    sort
    php
    알고리즘
    SERVER 환경변수
    console.table()
    JavaScript
    Java
    HTTP
    OpenFeign
    격리수준
    vParam
    graphQL
    springboot + graphql
    JsonVue
    docker
    stack
    Algorithm
    웹개발
    문자열 대표 클래스
    c#
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
99CORN
[간단정리] List, Set, Map 특징 및 차이점(+ 구현체 )
상단으로

티스토리툴바