NSSet和NSMutableSet是無序的, 但是它保證數據的唯一性。當插入相同的數據時,不會有任何效果。從內部實現來說是hash表,所以可以常數時間內查找一個數據。
1、NSSet的使用
[NSSet setWithSet:(NSSet *)set]; 用另外一個set對象構造
[NSSet setWithArray:(NSArray *)array];用數組構造
[NSSet setWithObjects:...]:創建集合對象,並且初始化集合中的數值,結尾必需使用nil標志。
[set count] ; 得到這個結合對象的長度。
[set containsObject:...]: 判斷這個集合中是否存在傳入的對象,返回Bool值。
[set objectEnumerator]: 將集合放入迭代器。
[enumerator nextObject]:得到迭代器中的下一個節點數據,使用while遍歷這個迭代器,方可遍歷集合對象中的對象。
[set isEqualToSet:objset]:判斷兩個集合是否完全相等,返回Bool值。
[set isSubsetOfSet:objset]:判斷集合中的所有數據是否都相等與objeset集合中,返回Bool值。
[set allObjects];
示例代碼:
1.1 以NSArray構造set
打印:
2012-07-10 09:39:02.015 objectiveC[720:403] {(
rongfzh,
"\U5bf9\U8c61abc",
totogo2010
)}
1.2 set的一些比較方法的使用。
打印結果:
2012-07-10 09:50:32.018 objectiveC[939:403] set count:5
2012-07-10 09:50:32.020 objectiveC[939:403] set包含age
2012-07-10 09:50:32.021 objectiveC[939:403] set isSubsetOfSet set1
2012-07-10 09:50:32.023 objectiveC[939:403] array:(
age,
25,
"\U7537",
"\U5f20\U4e09",
name
)
2012-07-10 09:50:32.027 objectiveC[939:403] set1裡的對象:age
2012-07-10 09:50:32.028 objectiveC[939:403] set1裡的對象:25
2012-07-10 09:50:32.028 objectiveC[939:403] set1裡的對象:男
2012-07-10 09:50:32.029 objectiveC[939:403] set1裡的對象:張三
2012-07-10 09:50:32.029 objectiveC[939:403] set1裡的對象:name