Data Structure - (Set, hash)(Dictionary / HashMap / HashTable)

박주엽·2020년 8월 10일
0

자료구조

목록 보기
2/2

Set

array나 list 처럼 순열 자료구조 이지만 순서라는 개념이 존재하지 않는다.

-데이터를 비순차적으로 저장
-삽입 순서대로 저장되지 않는다
-수정가능(mutable)
-동일한 값 여러번 삽입 불가능, 동일 값 하나의 값만 저장
-Fast Lookup이 필요할 때 사용

Set의 구조

  • Array와 달리 set은 순차적으로 저장되지 않음
  • Set에서 요소들이 저장될 떄 순서는
    1. 저장할 요소 값의 hash 값을 구함
    1. hash 값에 해당하는 공간(bucket)에 값을 저장
  • 순서가 없기에 indexing도 없다
  • hash 값 기반의 공간에 저장되기 때문에 중복된 값 저장할 수 없다
  • Lookup이 굉장히 빠름
    1.Look up: 특정 값을 포함하고 있는지를 확인 하는것 ==> 5 in my_set
    2.Set의 총 길이와 상관없이 단순히 해쉬값 계산 후 해당 bucket을 확인하면 됨으로 O(1)

hash는 단방향 (one way) 암호화 입니다. 단방향이란 한번 암호화 하면 복호화가 안된다는 뜻입니다. 실제 값의 길이와 상관없이 hash 값을 일정한 길이를 가집니다. 그럼으로 Hash는 주로 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑할때 사용됩니다.

When To Use Set

  • 중복된 값을 골라내야 할때
  • 빠른 look up 을 해야 할때
  • 그러면서 순서는 상관 없을때

Dictionary / HashMap / HashTable

Dictionary (다른 언어에서는 hashmap 이나 hash table이라고 하기도 함)는 Key-value 형태의 값을 저장할 수 있는 자료구조 입니다. 이름은 "정우성" 등 실제 데이터 값과 데이터를 설명하는 key의 대응 관계를 표현할때 유용합니다.
Dictionary의 특성은 다음과 같습니다.

1.Set과 마찬가지로 특정 순서대로 데이터를 리턴하지 않는다.
2.Key의 값은 중복될 수 없다. 만일 중복된 key 가 있으면 먼저 있던 key와 value를 대체한다.
3.수정 가능하다(mutable).

Dictionary의 내부 구조

  • Set와 비슷하게 key 값의 해쉬값을 구한 후 해쉬값에 속해있는 bucket에 값을 저장한다.
  • 그럼으로 set와 마찬가지로 순서가 없고 중복된 key 값은 허용 되지 않는다.

When To Use Dictionary

마치 데이터베이스 처럼 키와 값을 묶어서 데이터를 표현해야 할때 유용하다. 실제로 데이터베이스 에서 읽어들인 값을 dictionary로 변환해서 사용 자주 함.

0개의 댓글