您的位置:首页 > 其它

OC 容器 数组 字典 集合 枚举

2014-03-31 18:55 253 查看
//容器类
//容器中只能装对象类型

//容器类分为数组(NSArray),字典(NSDictionary),集合(NSSet)
//所有的容器类都有 可变(Mutable) 和 不可变 两种类型

//不可变的容器 本身不能被修改 如果要添加元素等操作 需要返回新的对象
//可变容器 则可以直接在自身基础上进行添加删除元素等操作

//所有的 可变容器 肯定都继承于 相应的不可变容器

//数组
//数组的特点:数组内部的元素是有序排列的,并且以下标标记内部的元素
//1.不可变数组(NSArray)

//数组的初始化方法
//注意写法,按照0,1,2...的顺序依次在数组中排列
NSArray * arr = [[NSArray alloc]initWithObjects:@"11",@"22",@"33", nil];
NSLog(@"%@",arr);

//取得数组元素的个数
NSLog(@"数组内元素的个数:%lu",[arr count]);//%lu无符号整型

//获取数组内的元素(根据下标获取)
//数组一定不要越界
NSString * str = arr[0];//C语言方式取元素(不推荐)
NSString * str1 = [arr objectAtIndex:1];//推荐用这种 看起来直观

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

//根据对象获得 这个对象在数组中的下标
NSLog(@"%lu",[arr indexOfObject:@"22"]);

//数组 增加一个元素
//因为不可变数组本身不能被修改 所以对不可变的数组增加元素会返回一个新的数组
NSArray * arrAdd = [arr arrayByAddingObject:@"44"];
NSLog(@"%@",arrAdd);

//可变数组(NSMutableArray)

//可变数组的初始化方法(这个方法是从父类继承过来的)
NSMutableArray * mutableArr = [[NSMutableArray alloc]initWithObjects:@"55",@"66",@"77", nil];

//可变数组增加元素 是在自身添加
[mutableArr addObject:@"88"];
[mutableArr addObject:@"88"];
NSLog(@"%@",mutableArr);

//直接删除所有给定的元素
[mutableArr removeObject:@"88"];
NSLog(@"%@",mutableArr);

//删除元素
//按元素的下标(index)删除
[mutableArr removeObjectAtIndex:1];
NSLog(@"%@",mutableArr);

//插入元素
//按照下标插入新元素
[mutableArr insertObject:@"00" atIndex:1];
NSLog(@"%@",mutableArr);

//替换
[mutableArr replaceObjectAtIndex:0 withObject:@"22"];
NSLog(@"%@",mutableArr);

//字典的特点: 字典内部的元素是无序的,每个元素都有唯一一个对应的key, 可以通过key取得相应的对象

//不可变字典(NSDictionary)
//字典的初始化方法
NSDictionary * dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"shenqingjunderouti",@"shenqingjun",@"value",@"key", nil];
NSLog(@"%@",dic);//输出时,系统按首字母排序后输出

//取得字典存储的对象个数
NSLog(@"%lu",[dic count]);

//按照key取得字典中的对象
NSLog(@"%@",[dic objectForKey:@"shenqingjun"]);

//一个value可以有多个key,一个key只能对应一个valule;valule可以相同,key不能相同;
//获得所有的key (返回一个数组)
//可以通过key去找valule,但是不能通过valule去找key,单向过程;
NSLog(@"%@",[dic allKeys]);

//可变字典(NSMutableDictionary)
//只要是对象都可以往里写,对象不可以是一样的;里面可以有多个对象,必须一对一对往里写(一个@value,对应一个@key)
NSMutableDictionary * mutableDic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"shenqingjunderouti",@"shenqingjun",@"value",@"key", nil];

//添加;
//设定新的键值对 即 添加一个新对象,需要给这个新的对象指定一个相应的key
[mutableDic setObject:@"wangguan'body" forKey:@"wangguan"];
NSLog(@"%@",mutableDic);

//删除
[mutableDic removeObjectForKey:@"wangguan"];
NSLog(@"%@",mutableDic);

//替换
//如果设定的key相同,新的值会覆盖掉旧的
[mutableDic setObject:@"2" forKey:@"shenqingjun"];
NSLog(@"%@",mutableDic);


//集合
//集合的特点: 集合内部的元素是无序的,集合中不会出现两个一样的对象

//不可变集合(NSSet)
//集合的初始化方法
NSSet * set = [[NSSet alloc]initWithObjects:@"11",@"11",@"33",@"44", nil];

NSLog(@"%@",set);

//有多少个元素
NSLog(@"%lu",[set count]);//%lu无符号整型

//取得集合中的一个元素
NSLog(@"%@",[set anyObject]);

//取得集合中的所有元素 (返回一个数组)
NSArray * ar = [set allObjects];
NSLog(@"%@",ar);

//可变集合(NSMutableSet)
NSMutableSet * set1 = [[NSMutableSet alloc]initWithObjects:@"00",@"00",@"11",@"22", nil];
NSLog(@"%@",set1);


//快速枚举
//For循环
NSArray * arrs = [NSArray arrayWithObjects:@"qq",@"ww",@"ee", nil];
for (int i=0; i<[arrs count]; i++) {
NSLog(@"%@",[arrs objectAtIndex:i]);
}

//循环次数自动生成,有几个字符串个数,自动循环几次;
//对于这种内部元素类型一致的容器,推荐使用for...in循环;缺点:控制不了循环次数
//1.第一个参数:临时生成的对象
//2.第二个参数:容器对象
for (NSString * strTemp in arrs) {
NSLog(@"对字符串进行操作:%@",strTemp);
}


//字典
NSDictionary * dicS = [NSDictionary dictionaryWithObjectsAndKeys:@"aa",@"AA",@"bb",@"BB", nil];

for(NSString * key in dicS) {
NSString * stq = [dicS objectForKey:key];
NSLog(@"%@",stq);
}


//集合
NSSet * set22 = [[NSSet alloc]initWithObjects:@"11",@"11",@"33",@"44", nil];
for (NSArray * strTemp11 in set22) {
NSLog(@"对字符串:%@",strTemp11);


本文出自 “Ghost霍的尛博客” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: