iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
佛心分享-IT 人自學之術

自學swift語法系列 第 20

Day20-Set & Hash 概念介紹 & Hashable

  • 分享至 

  • xImage
  •  

Array 的限制:

  • 檢查重複的資料需要歷遍全部資料。
    =>檢查有沒有包含某一筆資料也可能需要歷遍資料
  • 必須知道「index」才能直接存取,否則就要找。

Set

  • Set 的資料沒有順序的概念。
  • Set 中無法存重複的資料。
    => swift 遇到相同 hash 值會再比較值是否相等。
  • Set 無法存取特定元素。
  • 可做集合操作(聯集 .uion()、交集 .intersection()、差集 .symmetrivDifference())。
  • 因為需要透過 .hashValue 進行快速的存取和運算,Element 必須是 Hashable。

struct Set where Element : Hashable
Hashable => 知道怎麼把自己 Hash 成一個Int。

  • Set 的存取是透過 .hashValue
  • 好的 Hash 有很高的唯一性。
  • Swift 用 Linear Probing 處理重複 Hash 值。

Hash
資料 → Hash Function → Hash 值。

  1. Hash 的主要用途是什麼?
    => 簡化資料,以便用相對快的速度比較和驗證。
  2. Set 跟 Array 有哪些差別?
    => Array 有順序,Set 沒有;
    => Array 可以儲存重複資料,Set 不行;
    => Array 可以存取特定資料,Set 不行;
    => Array 可以存任何資料類型,Set 只能存 Hashable 的資料;
    => Set 可以快速的檢查是否包含特定資料以及進行集合運算。
  3. 有遵照 Hashable 的資料類型會有一個 .hashValue 屬性,這個屬性是什麼類型?
    => Int

實作部分:https://ithelp.ithome.com.tw/upload/images/20241002/20169272knrRhy0f22.pnghttps://ithelp.ithome.com.tw/upload/images/20241002/20169272Xw4HYhntGw.pnghttps://ithelp.ithome.com.tw/upload/images/20241002/20169272Lp9QAVFf8F.png

影片連結:https://youtu.be/8aqQ02wnURg?si=5XX17n7zbG3wyh9W


上一篇
Day19-流程控制「While Loop」
下一篇
Day21-Dictionary 介紹 & Collection 整理
系列文
自學swift語法30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言