您的位置:首页 > 其它

Foundation框架: 8.OC中的集合类之三 - NSSet和NSMutableSet的基本认识

2015-02-05 20:35 447 查看
前面我们讲完过了NSArray和NSMutablArray了, 这次我们来讲讲第二个集合类,
NSSet和它的子类NSMutableSet, 其实NSSet和NSArray基本上是一样的, 唯一的不同点就是NSSet它是没有循序的, 所返回的对象是随机的,
下面让我们来看看吧~

例子:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
NSSet *s = [NSSet set];

NSSet *s1 = [NSSet setWithObjects:@"a", @"b", @"c", @"d", @"e", nil];

NSString *str = [s1 anyObject];

NSLog(@"s = %ld, s1 = %ld", s.count, s1.count);

NSLog(@"str = %@", str);

return 0;
}


打印出来的结果:
2015-02-05 20:39:14.211 7.NSSet[3833:303] s = 0, s1 = 5
2015-02-05 20:39:14.212 7.NSSet[3833:303] str = d


其实NSSet和NSArray的创建方法很像, 这是OC语法中的一个规律, 创建什么类的对象, 就以什么类名开头, 下面继续说NSMutableSet:
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
NSMutableSet *s = [NSMutableSet set];

// 1.添加元素的方法
[s addObject:@"a"];

// 2.删除元素的方法
[s removeObject:@"a"];

return 0;
}


有些人会很细心的发现, 在删除元素的方法里会少了几个和NSArray一样的方法, 就只剩下两个方法, 其实这是没错的, 由于NSSet的特性, 它是随机返回的, 我们并不能知道它会返回哪个对象给我们, 所以这里的删除元素方法就缺少了几个和位置相关的.

总结:

NSSet和NSArray的对比:

1> 共同点

* 都是集合, 能存放多个OC对象

* 只能存放OC对象, 不能存放非OC对象类型(基本数据类型:int,
char, float等, 结构体, 枚举)

* 本身都不可变, 都有一个可变的子类

2> 不同点

* NSArray有顺序,
NSSet没有顺序.

好了, 这次就讲到这里, 下次我们继续~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: