[간단정리] 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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바