Data Structure #2

seonja kim·2020년 4월 14일
0

Set

의의

순열 자료구조(collection)이지만 순서라는 개념이 존재하지 않음.

특징

  1. 데이터를 비순차적으로 저장할 수 있는 순열 자료구조
  2. 삽입(insertion) 순서대로 저장되지 않음
  3. 수정이 가능함
  4. 동일한 값을 삽입시 하나의 값만 저장됨
  5. Fast Lookup이 필요할 때 주로 쓰임
  • 중요한 특징들
  1. 단방향 (one way)암호화 = 한번 암호화하면 복호화가 안됨.
  2. 실제 값의 길이와 상관없이 hash 값은 일정한 길이를 가짐
  3. 임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑할 때 사용

구조

  1. set에서 요소들이 저장될 때의 순서
  • 저장할 요소의 값의 hash 값을 구한다.
  • 해쉬값에 해당하는 공간(bucket)에 값을 저장
  1. 각 해쉬값에 해당하는 bucke에 값을 저장하므로 순서가 없고 indexing도 없다.
  2. 해쉬값을 기반으로 저장하기에 look up이 굉장히 빠름
  • look up : 특정값을 포함하고 있는지를 확인하는 것
  • set의 총 길이와 상관없이 해쉬값만 계산 후 해당 bucket을 확인하면 됨

사용처

  • 중복된 값을 골라내야 할 때
  • 빠른 look up을 해야 할 때
    • 순서가 상관이 없을 때

Dictionary/ HashMap/ HashTable

의의

  • Key-value 형태의 값을 저장할 수 있는 자료구조
  • 실제 데이터 값과 key의 대응 관계를 표현할 때 유용

특성

  1. 특정 순서대로 데이터를 리턴하지 않는다
  2. key의 값은 중복될 수 없다 - 중복된 key가 있으면 먼저 있던 key와 value를 대체하게 됨
  3. 수정이 가능함

내부구조

  • set과 비슷하게 key 값의 해쉬값을 구한 후, 해쉬값에 속해있는 bucket에 값을 저장
  • 이러한 이유로 중복된 key를 허용하지 않고 순서가 없다.

사용처

  • 키와 값을 묶어서 데이터를 표현해야 할 때 유용
  • 실제 데이터베이스에서 읽어들인 값을 dictionary로 변환해서 자주 사용함
profile
Adventurer

0개의 댓글