Swift(9) Dictionary, Set (Feat: Hash)

개발렬·2023년 7월 13일

Swift

목록 보기
9/23
post-thumbnail

Dictionary

  1. 키와 값으로 구성되며, 키는 중복되지 않지만 값은 중복될 수 있습니다.
  2. 정렬되지 않는 Collection입니다. 실행 중에는 같은 정렬 순서를 유지하지만, 새로운 인스턴스를 생성하면 새로운 정렬 순서가 적용됩니다.
  3. 하나의 타입만 사용할 수 있으며, 키와 값은 서로 다른 타입일 수 있습니다.
    키는 해시로 구현된 타입으로 사용해야 합니다. 일반적으로 문자열은 해시로 구현되므로 문자열을 키로 사용하는 것이 일반적입니다.

딕셔너리는 해시 테이블로 구현된 자료구조

  • 해시 테이블은 키-값 쌍을 저장하고 검색하는 데 사용되는 효율적인 자료구조입니다.
  • 해시 테이블은 키를 해시 함수를 사용하여 해시 코드로 변환한 다음, 이 해시 코드를 인덱스로 활용하여 값을 저장합니다.
  • 이렇게 저장된 값은 상수 시간(O(1))에 검색할 수 있습니다.
let dict: Dictionary<K,V>
let dict: [String, Int]

let dict = [String, String]() 생성자를 사용해도 됩니다.

"Upsert" Update, Insert

let b = words["A", default: "Empty"]
dict.updateValue(Value, forKey: Key)

"Upsert"는 이 두 개념을 결합한 것으로, 데이터가 이미 존재하면 업데이트를 수행하고, 데이터가 존재하지 않으면 새로운 데이터를 삽입하는 작업을 의미합니다.

Set

  1. 중복을 허용하지 않습니다
  2. 하나의 타입만 저장할 수 있습니다.
  3. 정렬되지 않는 Collection입니다.
  • 해시 알고리즘을 사용하는 자료구조는 배열에 비해 빠른 검색 속도를 가집니다.
  • 모든 타입은 해시 함수를 구현하여 자신의 객체를 해싱할 수 있어야 합니다.
  • 이를 통해 셋은 요소의 고유성을 유지하고 빠른 검색 속도를 제공할 수 있습니다.

해싱이란?

하나의 데이터를 고정된 길이의 문자열이나 정수로 변환하는 과정입니다.
셋이 저장하는 모든 타입은 해싱을 구현해야한다

Set<T>
profile
Flutter, iOS...나는 모바일 앱 개발자

0개의 댓글