Obj-C 语言学习 笔记(III)Obj-C 中的集合类

Obj-C中的集合类有三种:集合Set,数组Array,字典Dictionary

 

集合满足集合内元素的互异性,无序性

Obj-C中的集合与C++和JAVA不同,它是弱类型的。不同类型的对象可以被放进同一个集合中。

Obj-C中的集合有分可变集合和不可变集合,加起来共6种:

NSSet       NSMutableSet

NSArray       NSMutableArray

NSDictionary     NSMutableDictionary

他们都具有类似的声明,初始化,元素操作和访问方法

 

1. NSSet 和 NSMutableSet

//声明方法为 setWithObjects, 不同的对象用逗号隔开,以nil结束
//以nil结束这点也被采用于其他所有集合类的声明里
NSSet *firstSet = [NSSet setWithObjects:@"123", @"456", @"789", nil];

//通过遍历访问:
for (id element in firstSet){
     NSLog(@"%@ \n", element);
}

//可变集合的声明和初始化
NSMutableSet *directors = [[NSMutableSet alloc] init];

//可变集合中添加元素
[directors addObject:@"Quentin Tarentino"];
[directors addObject:@"Christopher Nolan"];
[directors addObject:@"Hou Hsiao Hsien"];
[directors addObject:@"Michael Wang"];
[directors addObject:@"Quentin Tarentino"];

//用相同的元素作为参数让程序从集合中移走该元素        
[directors removeObject:@"Michael Wang"];

 

2. NSArray 和 NSMutableArray

//声明与初始化
NSArray *firstArray = [NSArray arrayWithObjects:@"246", @"135", nil];

//通过序号访问元素 objectAtIndex
NSLog(@"%@", [firstArray objectAtIndex:1]);

//声明可变数组
NSMutableArray *movieGenre = [[NSMutableArray alloc] init];

//向可变数组添加元素 addObject
[movieGenre addObject:@"Love"];
[movieGenre addObject:@"Thriller"];
[movieGenre addObject:@"Drama"];
[movieGenre addObject:@"Western"];
        
//像已经添加好元素的数组插入数组 insertObject: (Object) atIndex: (NSUInteger)
[movieGenre insertObject:@"Documentary" atIndex:0];

//移去元素有几种方法:
//根据序号,根据元素,移去最后一位        
[movieGenre removeObjectAtIndex:2];
[movieGenre removeObject:@"Thriller"];
[movieGenre removeLastObject];
        
for(id genre in movieGenre){
     NSLog(@"%@\n", genre);
}

 

3. NSDictionary 和 NSMutableDictionary

//NSDictonary声明 dictonaryWithObjectsAndKeys 注意对象放在前面,Key放在后面
NSDictionary *firstDict = [NSDictionary dictionaryWithObjectsAndKeys:
                                   @"obj1", @"1",
                                   @"obj2", @"2",
                                   @"obj3", @"3", nil];

NSLog(@"%@", [firstArray objectAtIndex:1]);

//另外也可以用这种方式来声明,但就只能声明一个
NSDictionary *someDict = [NSDictionary dictionaryWithObject:@"obj1" forKey:@1];

//NSMutableDictionary的声明,假设我们总记不住一些热门电影的摄影导演的名字,想要通过电影的名称来索引摄影导演的名字。那导演名字是value,电影名是key
NSMutableDictionary *DPsFamousWork = [[NSMutableDictionary alloc] init]; //加入字典项 [DPsFamousWork setObject:@"Andrzej Sekula" forKey:@"Pulp Fiction"]; [DPsFamousWork setObject:@"Hoyte Van Hoytema" forKey:@"Interstellar"]; [DPsFamousWork setObject:@"Roger Deakins" forKey:@"Sicario"]; [DPsFamousWork setObject:@"Emmanuel Lubezki" forKey:@"The Revenant"]; //根据电影名移除某项 [DPsFamousWork removeObjectForKey:@"The Revenant"]; //根据电影名访问某项 NSLog(@"%@", [DPsFamousWork objectForKey:@"Sicario"]);

 

posted on 2016-02-28 20:54  Wangsta  阅读(178)  评论(0编辑  收藏  举报

导航