Swift Review#4[複雜型態的資料儲存-集合Set]

影山小麥機
Jun 27, 2021

--

前言

在上一個資料儲存型態裡面,介紹過了陣列(Array),也明白Array的操作方式有幾個特性:Array具有索引性,也就是它能夠依據「位置」的排序,去查找先後順序,而也因此衍伸出了幾種可以對Array進行變更的函式,比如新增(append)、插入(insert),又或者是刪除(remove)、清除(removeall),這幾個方式是對Array進行變更的方式,了解完它的特性之後,下一種資料儲存方式,會談到的是集合(Set)

正文

集合跟陣列、字典的不同在於集合就是一個涵括所有內容的概念,集合像一個袋子,他把所有的東西裝在一起,

但不會跟你講說你要第幾個項目,我拿給你相應的項目(陣列的概念)

or 你跟我講我關鍵字,我把對應的東西拿給你(字典的概念)

你只能問他,這裡面有沒有A這個東西,他回答有或是沒有(集合的概念)

了解它的運作模式,就會知道,集合這個概念就是「從一個袋子裡面拿出東西」。

它跟陣列不一樣的地方,在於它沒有排序性、沒有索引性、不可以有重複項,你只能問它:「存在或不存在?」

不過,集合這個東西同樣有所謂的「新增值」與「刪除值」的方式:

增加insert

假若你要新增一個字串,那就insert你要增加的東西。但由於集合並沒有排序的概念,所以你可能每次Run的程式碼在結果都不一樣,所以它的新增跟陣列不一樣,不用加上「位置」

跑第一次
跑第二次
跑第三次

上面三個都不一樣,也就說明了集合的特性。

刪除remove

假若你要刪除全部,則可以用names = []的方式進行

不過,集合這種資料儲存方式,還有其他的東西可以探討,比如像是高中數學曾經在某堂課提到的「集合運算」,也就是所謂的:交集、聯集、對稱差集、差集

資料來源:這個好像是Apple官網的

交集(intersects):取兩個集合的共通處

差集(exclusive):取兩個集合共通處之外的部分

聯集(union):兩個集合交集與差集的部分

對稱差集(substract):取兩個集合其中一集合的差集

總而言之,這四個集合運算的方式,我們在下面以一些小案例作為解釋:

假若以下面這幾個集合為基本案例

交集(intersects)

取兩個集合的共通處

求交集

差集(exclusive)

取兩個集合共通處之外的部分

求差集

聯集(union)

兩個集合交集與差集的部分

求聯集

對稱差集(substract):取兩個集合其中一集合的差集

求對稱差集

綜合言之,集合這個概念從一開始就是「無序」、「不可索引的」、「不可以有重複項」,它跟陣列有很大的差別。但它可以進行所謂的集合運算,這應該算是它的優勢。所以之後要資料儲存的時候。要記得選擇適合的方式儲存哦!

Sign up to discover human stories that deepen your understanding of the world.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

影山小麥機
影山小麥機

Written by 影山小麥機

本職為Mobile工程師,熱愛分享視野,也樂意站在ChatGPT的肩膀上。訂閱小麥機,收割技術、職涯、人生的難題。

Responses (1)

Write a response