一:NSSet 集合:
NSSet到底什么类型,其实他和NSArray功能性质一样,用于存储对象,属于集合,NSSet,NSMutableSet类声明编程接口对象,是无序的集合,在内存中存储方式是不连续的,不像NSArray,NSDictionary(都是有序集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的;
NSSet和NSArray区别是:在搜索一个一个元素时,NSSet效率会比NSArray高,主要是它用奥了一个算法hash;比如你要存储 元素A,一个hash算法能直接找到A存储的位置,同样,当你要访问A时,一个hash过程就能找到A存储的位置,而对于NSArray若想知道A到底在不在数组中,则需要遍历整个数组,显然效率低了。
注意:重点!!!NSSet在实际的开发当中的最常用用法:
NSSet中不能够存储重复数据,可以用它来去除重复的值,(就是说重复的值无论你存多少他只能显示一个)
本小节知识点:
1:向set中添加元素
2:求元素个数
3:判断集合中是否存在某个对象
4:遍历集合
详细内容见下面代码:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//NSSet 是无序的,是个不可变集合
//1:向字典中添加元素
NSSet *set = [[NSSet alloc]initWithObjects:@"one",@"two",@"three", nil];
NSLog(@"set = %@",set);
//2:Set元素个数
NSLog(@"set 的元素个数:%zi",set.count);
//3:判断集合中是否存在某个对象(跟数组是一样的)
BOOL isContains = [set containsObject:@"one"];
NSLog(@"存在吗?:%@",isContains?@"YES":@"NO");
//4:set集合的遍历
NSEnumerator *enumerato = [set objectEnumerator];
NSString *value;
while (value = [enumerato nextObject]) {
NSLog(@"value = %@",value);
}
第二:NSMutableSet 可变集合
详细内容直接上代码:
//NSMutableSet 可变集合
//1:创建字典
NSMutableSet *muSet = [[NSMutableSet alloc]init];
//2:存值
[muSet addObject:@"hello"];
[muSet addObject:@"every"];
[muSet addObject:@"one"];
NSLog(@"muSet = %@",muSet);
//3:删除
[muSet removeObject:@"hello"];
//4:删除所有
//[muSet removeAllObjects];
//5:遍历
NSEnumerator *emumerator2 = [muSet objectEnumerator];
NSString *value2;
while (value2 = [emumerator2 nextObject]) {
NSLog(@"value = %@",value2);
}