Swift語法專題五 集合型別

2021-09-23 18:54:24 字數 4194 閱讀 1804

swift中提供了3種集合型別,array資料型別,set集合型別,dictionary字典型別。array用於存放一組有序的資料,資料角標從0開始一次遞增;set用於存放一組無序的資料,資料不可以重複;dictionary也用於存放一組無序的資料,只是其是按照鍵值對的方式儲存,鍵值必須唯一。這裡借用官方文件中的一張圖來表示3種集合型別的特點:

array通常也被稱為陣列,swift是一種型別安全語言,其中的array型別也必須確定其元素的型別,宣告陣列型別有兩種方法,示例如下:

//將陣列宣告為int型別值集合的陣列

var array1:[int]

var array2:array

//建立空陣列

array1 =

array2 = array()

//向陣列中追加元素
在建立陣列時,也可以對陣列進行初始化,示例如下:

//建立陣列[0,0,0]

var array3 = [double](count: 3, repeatedvalue: 0)

//建立陣列[2.5,2.5,2.5]

var array4 = array(count: 3, repeatedvalue: 2.5)

//陣列可以使用+號直接進行追加 [0,0,0,2.5,2.5,2.5]

var array5 = array3+array4

swift中提供了許多訪問和修改陣列的方法,示例**如下:

//獲取陣列中元素個數

array5.count

//判斷陣列是否為空

array5.isempty

//通過下標訪問陣列中的元素

array5[1]

//通過下標修改陣列元素

array5[1]=2

//修改資料中的一組資料

array5[0...3] = [1,1,1,1]

//向陣列中某個位置插入乙個資料

array5.insert(3, atindex: 1)

//移除陣列某個角標處的元素

array5.removeatindex(1)

//移除陣列的最後乙個元素

array5.removelast()

//移除陣列第乙個元素

array5.removefirst()

//遍歷整個陣列

for item in array5

//遍歷陣列列舉

for (index,item) in array5.enumerate()

set型別集合不關注元素的順序,但是其可以保證其中元素的唯一性。和array型別一樣,set型別來宣告時也需要確定其內元素的型別,示例如下:

var set1:set

= ["a","b","c","d"]

下面示例**演示對集合進行操作:

var set1:set

= ["a","b","c","d"]

var set2:set

= ["e","f","g"]

//向集合中插入元素

set1.insert("z")

//獲取集合中元素個數

set1.count

//判斷集合是否為空

set1.isempty

//將集合中的某個元素移除

set1.remove("a")

//移除集合中的所有元素

set1.removeall()

//判斷集合中是否包含某個元素

set2.contains("e")

//遍歷集合

for item in set2

//進行從小到大的排序遍歷

for item in set2.sort()

set也支援進行一些集合的數**算,例如交集,並集,補集等,下面一張圖演示了set進行集合運算的一些特性:

intersect()方法返回兩個集合的交集。

exclusiveor()方法用於返回兩個集合交集的補集。

union()方法用於返回兩個集合的並集。

subtract()方法用於返回第二個集合的補集。

示例**如下:

var set3:set= [1,2,3,4]

var set4:set= [1,2,5,6]

//返回交集

var setinter = set3.intersect(set4)

//返回交集的補集

var setex = set3.exclusiveor(set4)

//返回並集

var setuni = set3.union(set4)

//返回第二個集合的補集

var setsub = set3.subtract(set4)

使用比較運算子==可以比較兩個set集合是否相等,當兩個set集合中所有元素都相等時,這兩個集合才相等。下面**顯示了與子集相關的運算:

var set5:set = [1,2]

var set6:set = [2,3]

var set7:set = [1,2,3]

var set8:set = [1,2,3]

//判斷是否是某個集合的子集 set5是set7的子集 返回ture

set5.issubsetof(set7)

//判斷是否是某個集合的超集 set7是set5的超集 返回ture

set7.issupersetof(set5)

//判斷是否是某個集合的真子集 set5是set7的真子集 返回ture

set5.isstrictsubsetof(set7)

//判斷是否是某個集合的真超集 set7不是set8的真超集 返回false

set7.isstrictsupersetof(set8)

swift中的dictionary在宣告時必須明確鍵的型別和值的型別,示例如下:

var dic:dictionarystring>

var dic2:[int:string] = [1:"one",2:"two"]

訪問與操作dictionary的方法,**示例如下:

var dic2:[int:string] = [1:"one",2:"two",3:"three",4:"four"]

//獲取字典鍵值對個數

dic2.count

//判斷字典是否為空

dic2.isempty

//通過鍵獲取值

dic2[1]

//通過鍵修改值

dic2[1] = "first"

//新增鍵值

dic2[0] = "zero"

//updatevalue 方法將更新乙個鍵值 如果此鍵存在 則更新鍵值 並且將舊的鍵值返回 如果此鍵不存在 則新增鍵值 返回nil 其返回的為乙個optional型別值 可以使用if let進行處理

dic2.updatevalue("9", forkey: 1)

//使用if let 處理updatevalue的返回值

iflet oldvalue = dic2.updatevalue("one", forkey: 1)

//通過鍵值獲取的資料也將是有個optional型別的值 也可以使用if let

iflet value = dic2[1]

//移除某個鍵值對

dic2[9]=nil

dic2.removevalueforkey(9)

//對字典進行遍歷

for (key,value) in dic2

//遍歷所有鍵

for key in dic2.keys

//遍歷所有值

for value in dic2.values

//進行從小到大的排序遍歷

for key in dic2.keys.sort()

Redis教程 五 集合(SET)型別

redis教程 五 集合 set 型別 redis 的鍵值可以支援資料型別 字串,列表,散表,集合,有序集合 hyperloglog 通過選用不同的資料結構,使用者可以使用 redis 解決各式各樣的問題。set集合 redis 的集合以無序的方式儲存多個各不相同的元素。使用者可以快速的地向集合新增...

Redis教程 五 集合(SET)型別

redis教程 五 集合 set 型別 redis的鍵值可以支援資料型別 字串,列表,散表,集合,有序集合 hyperloglog,通過選用不同的資料結構,使用者可以使用redis解決各式各樣的問題。set集合 redis的集合以無序的方式儲存多個各不相同的元素。使用者可以快速的地向集合新增元素,或...

java基礎(五) 集合

1.集合與陣列的區別 1 陣列不可變長度,集合可變長度 2 陣列裡可放基本資料型別和物件,集合只能放物件 2.集合框架頂層介面collection的共性方法 增 add object obj addall collection c 刪 clear remove object obj removeal...