OC基礎資料型別 NSSet

2021-07-03 18:00:15 字數 2722 閱讀 9925

1、集合:集合(nsset)和陣列(nsarray)有相似之處,都是儲存不同的物件的位址;不過nsarray是有序的集合,nsset是無序的集合。

集合是一種雜湊表,運用雜湊演算法,查詢集合中的元素比陣列速度更快,但是它沒有順序。

nsset * set = [[nsset alloc] initwithobjects:@"one",@"two",@"three",@"four", nil];

[set count]; //返回集合中物件的個數

判斷集合中是否擁有某個元素

//判斷集合中是否擁有@「two」

bool ret = [set containsobject:@"two"];

判斷兩個集合是否相等

nsset * set2 = [[nsset alloc] initwithobjects:@"one",@"two",@"three",@"four", nil];

//判斷兩個集合是否相等

bool ret = [set isequaltoset:set2];

判斷set是否是set2的子集合

nsset * set2 = [[nsset alloc] initwithobjects:@"one",@"two",@"three",@"four",@"five", nil];

//判斷set是否是set2的子集合

bool ret = [set issubsetofset:set2];

集合也可以用列舉器來遍歷

//集合也可以用列舉器來遍歷

nsenumerator * enumerator = [set objectenumerator];

nsstring *str;

while (str = [enumerator nextobject])

通過陣列來初始化集合(陣列轉換為集合)

nsarray * array = [[nsarray alloc] initwithobjects:@"one",@"two",@"three",@"four", nil];

nsset * set = [[nsset alloc] initwitharray:array];

集合轉換為陣列

nsarray * array2 = [set allobjects];
2、可變集合nsmutableset

//可變集合nsmutableset

nsmutableset * set = [[nsmutableset alloc] init];

[set addobject:@"one"];

[set addobject:@"two"];

[set addobject:@"two"]; //如果新增的元素有重複,實際只保留乙個

刪除元素

//刪除元素

[set removeobject:@"two"];

[set removeallobjects];

將set2中的元素新增到set中來,如果有重複,只保留乙個

//將set2中的元素新增到set中來,如果有重複,只保留乙個

nsset * set2 = [[nsset alloc] initwithobjects:@"two",@"three",@"four", nil];

[set unionset:set2];

刪除set中與set2相同的元素

[set minusset:set2];
3、指數集合(索引集合)nsindexset

//指數集合(索引集合)nsindexset

nsindexset * indexset = [[nsindexset alloc] initwithindexesinrange:nsmakerange(1, 3)]; //集合中的數字是123

根據集合提取陣列中指定位置的元素

//根據集合提取陣列中指定位置的元素

nsarray * array = [[nsarray alloc] initwithobjects:@"one",@"two",@"three",@"four", nil];

nsarray * newarray = [array objectsatindexes:indexset]; //返回@"two",@"three",@"four"

4、可變指數集合nsmutableindexset

nsmutableindexset *indexset = [[nsmutableindexset alloc] init];

[indexset addindex:0]

[indexset addindex:3];

[indexset addindex:5];

//通過集合獲取陣列中指定的元素

nsarray *array = [[nsarray alloc] initwithobjects:@"one",@"two",@"three",@"four",@"five",@"six", nil];

nsarray *newarray = [array objectsatindexes:indexset]; //返回@"one",@"four",@"six"

OC基礎資料型別 集合 NSSet

1 集合 集合 nsset 和陣列 nsarray 有相似之處,都是儲存不同的物件的位址 不過nsarray是有序的集合,nsset是無序的集合。集合是一種雜湊表,運用雜湊演算法,查詢集合中的元素比陣列速度更快,但是它沒有順序。1 nsset set nsset alloc initwithobje...

OC資料型別

oc是增強了c的特性,所以在變數和基本資料型別上基本與c一致。在oc中變數命名有如下規則 由字母 數字 下劃線 符號組成 必須以字母 下劃線 符號開頭 大小寫敏感 在oc中定義變數的時候不能使用oc的保留字,oc的保留字如下 oc中有如下基本資料型別 int 宣告整型變數 double 宣告雙精度變...

OC 基礎資料型別轉bytes

ios 系統庫提供了簡便的api可以實現基礎資料型別和nsdata的轉化,讀data.bytes可以直接獲取到。以int為例 int convert to nsdata int num 10 nsdata data nsdata datawithbytes num length sizeof num...