成长之路-OC第五天 三大容器(数组,字典,集合)

//                            _ooOoo_
//                           o8888888o
//                           88" . "88
//                           (| -_- |)
//                            O\ = /O
//                        ____/`---'\____
//                      .   ' \\| |// `.
//                       / \\||| : |||// \
//                     / _||||| -:- |||||- \
//                       | | \\\ - /// | |
//                     | \_| ''\---/'' | |
//                      \ .-\__ `-` ___/-. /
//                   ___`. .' /--.--\ `. . __
//                ."" '< `.___\_<|>_/___.' >'"".
//               | | : `- \`.;`\ _ /`;.`/ - ` : | |
//                 \ \ `-. \_ __\ /__ _/ .-` / /
//         ======`-.____`-.___\_____/___.-`____.-'======
//                            `=---='
//
//         .............................................
//                  佛祖保佑             永无BUG

-------------

NSArray的初始化方法

//NSArray的初始化方法
    NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
    //便利构造器
    NSArray *arr1 = [NSArray arrayWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
    //字面量
    NSArray *arr2 = @[@"如花",@"石榴姐姐",@"凤姐"];

获取数组内数据个数

 NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
NSLog(@"%ld",[arr count]);    //3

访问数据

NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
//访问数据
    NSLog(@"%@",[arr objectAtIndex:1]);    //吴彦祖
    //字面量
    NSLog(@"%@",arr[1]);

数组插入数据和插入数组

NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
//数组插入数据
    NSLog(@"%@",[arr arrayByAddingObject:@"曾志伟"]);
    //数组插入数组
    NSLog(@"%@",[arr arrayByAddingObjectsFromArray:arr2]);

判断数组中是否包含某一个给定的对象

NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
if ([arr containsObject:@"刘德华"]) {
        NSLog(@"有");                             //有
    }

获取数组元素对应的索引

NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
//获取数组元素对应的索引
    NSLog(@"%ld",[arr indexOfObject:@"吴彦祖"]);
    //获取数组最后一个元素
    NSLog(@"%@",[arr lastObject]);

数组内的数据以自定字符连接

//数组内的数据以自定字符连接
    NSString *str = [arr componentsJoinedByString:@","];
    NSLog(@"%@",str);

按照给定的字符串进行截取,将截取的多段字符串放入数组中

NSString *string = @"www.baidu.com";
    NSArray *arr = [string componentsSeparatedByString:@","];
    NSLog(@"%@",arr);

小练习
截取下面网址的图片地址 然后用字符串拼接起来

NSString *str = @"http://www.aldhf.com/huasf.jpg&http://www.sghalg.cpm/as/asfj.jpg&http://www.sgladf.com/asf.jpg";
    NSArray *arr = [str componentsSeparatedByString:@"&"];
    NSLog(@"%@",arr);
    NSString *str2 = @"";
    for (int i =0; i < [arr count]; i++) {
        str2 = [str2 stringByAppendingString:arr[i]];
    }
    NSLog(@"%@",str3);

可变数组NSMutableArray

NSMuta����ableA����a��rray是OC中的可变数组,NSM����utableA����arr��ay的父类是NSArray, 具有NSArray所有的方法,同时在NSA����a��rray的基础上添加了对⾃自⾝身对象增删改的操作。
初始化方法

//初始化方法
    NSMutableArray *murray = [[NSMutableArray alloc] initWithObjects:@"marry",@"mark",@"dive", nil];
    //便利构造器
    NSMutableArray *murray1 = [NSMutableArray arrayWithCapacity:0];

可变数组的添加

//数组中添加一个对象
    [murray addObject:@"timo"];
    NSLog(@"%@",murray);

可变数组的插入

//数组中指定位置插入一个对象
    [murray insertObject:@"hehe" atIndex:1];
    NSLog(@"%@",murray);

可变数组的移除

//从数组中移除一个对象
    [murray removeObject:@"timo"];
    NSLog(@"%@",murray);
    //移除数组中最后的对象
    [murray removeLastObject];
    NSLog(@"%@",murray);
    //移除数组中所有的元素
    [murray removeAllObjects];
    NSLog(@"%@",murray);
    //数组中移除指定位置的元素
    [murray removeObjectAtIndex:2];
    NSLog(@"%@",murray);

可变数组的替换和交换

 //使用指定的对象替换指定位置的对象
    [murray replaceObjectAtIndex:1 withObject:@"demaxiya"];
    NSLog(@"%@",murray);

    //交换指定的两个下标对应的对象
    [murray exchangeObjectAtIndex:0 withObjectAtIndex:2];
    NSLog(@"%@",murray);

小练习

//用上面的替换做冒泡排序

    NSMutableArray *muarry = [NSMutableArray array];
    for (int i = 0; i < 10; i++) {
        NSNumber * num = [NSNumber numberWithInt:arc4random() %100];
        [muarry addObject:num];
    }
    for (int i = 0; i < [muarry count] - 1; i++) {
        for (int j = 0; j < [muarry count] - 1 -i; j++) {
            if ([[muarry objectAtIndex:j] intValue] > [[muarry objectAtIndex:(j + 1 )] intValue]) {
                [muarry exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
            }
        }
    }
    NSLog(@"%@",muarry);

字典NSDictionary

字典是一个⽆无序的集合,⽤用来存储具有一一对应关系的数 据。 字典中存储的每一个对象都是一对键值对,键值对包含两 个部分key��和��al��e,ke��与��al��e的值都是对象类型。
特点:与数组不同,字典靠ke��存取元素。
ke��与��al��e必须都是对象类型。
字典中键值对的存储是无序的。
字典分为两种类型不可变字典(NSDic��iona����),可变字典 (NSM����ableDic��iona����)。

初始化

//初始化 value - key
    NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"dema",@"name1",@"hangbin",@"name2",@"zhaoxing",@"name3", nil];

    //便利构造器
    NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"dema",@"name1",@"hangbin",@"name2",@"zhaoxing",@"name3", nil];

    //字面量key - value
    NSDictionary *dic2 = @{@"name1":@"zhaoxin",@"name2":@"nuoshou",@"jianshen":@"name3"};

获取相应的值

 //获取所有的key
    NSArray *keyArray = [dic allKeys];
    NSLog(@"%@",keyArray);

    //获取所有的value
    NSArray *valueArray = [dic allValues];
    NSLog(@"%@",valueArray);

    //字典只能通过key取值
    NSLog(@"%@",[dic objectForKey:@"name1"]);

小练习

//小练习 按 [key]:[value]格式输出
    NSDictionary *testDic = [NSDictionary dictionaryWithObjectsAndKeys:@"盖伦",@"德玛西亚之力",@"嘉文",@"德玛西亚皇子",@"赵信",@"德邦总管",@"拉克丝",@"光辉女郎",@"薇恩",@"暗夜猎手",@"奎因",@"德玛西亚之翼",@"泰隆",@"刀锋之影",@"德莱文",@"荣耀行刑官",@"德莱厄斯",@"诺克萨斯之手",@"卡特琳娜",@"不祥之刃",@"凯南",@"狂暴之心",@"提莫",@"迅捷斥候",@"兰博",@"机械公敌",@"塔姆",@"河流之王",@"乐芙兰",@"诡术妖姬",@"莫甘娜",@"堕落天使",@"亚索",@"疾风之刃", nil];

    NSArray *KeyArr = [testDic allKeys];    //获取key的值
    //NSArray *ValueArr = [testDic allValues];
    for (int i = 0; i < [KeyArr count]; i++) {
       // NSString * key = [KeyArr objectAtIndex:i];    //输出第i个key
       // NSLog(@"[%@]:[%@]",[KeyArr objectAtIndex:i ],[testDic objectForKey:Key]);                 //按照输出的key值找value
        NSLog(@"[%@]:[%@]",[KeyArr objectAtIndex:i],[testDic objectForKey:[KeyArr objectAtIndex:i]]);
    }

可变字典

继承了不可变字典的所有方法 同时 在其基础上添加了 “增加”,“修改”,“删除”的操作。

初始化方法

//初始化方法
    NSMutableDictionary *mudic = [[NSMutableDictionary alloc] initWithCapacity:10];
    //便利构造器
    NSMutableDictionary *mudic1 = [NSMutableDictionary dictionaryWithCapacity:10];
    //字面量
    NSMutableDictionary *name = [@{@"key1":@"frank", @"key2":@"duck"}
                                 mutableCopy];

字典中添加新的键值对以及 修改某一对键值

//字典中添加新的键值对以及 修改某一对键值
    [mudic setObject:@"demaxiya" forKey:@"name1"];
    [mudic setObject:@"hangbin" forKey:@"name2"];
    NSLog(@"%@",mudic);

移除字典的值

//移除指定的键对应的键值对
    [mudic removeObjectForKey:@"name1"];
    NSLog(@"%@",mudic);
    //移除字典中所有的键值对
    [mudic removeAllObjects];

集合NSSet

集合两大特性 排异性 无序性 哈希算法 集合优点 效率特别高

初始化方法

 //初始化方法
    NSSet *ns = [[NSSet alloc] initWithObjects:@"faker",@"banji",@"mrain", nil];
    //便利构造器
    NSSet *ns2 = [NSSet setWithObjects:@"faker",@"banji",@"mrain", nil];

集合的取值

//获取集合中对象的个数
    NSLog(@"%ld",[ns count]);

    //获取集合中所有的对象
    NSLog(@"%@",[ns allObjects]);

    //从集合中取出一个对象
    NSLog(@"%@",[ns anyObject]);

NSMutableSet 可变集合

初始化方法

//初始化方法
NSMutableSet *name = [[NSMutableSet alloc] initWithCapacity:0];
//便利构造器
NSMutableSet *name1 = [NSMutableSet setWithCapacity:0];

添加删除

//添加一个对象
    [name addObject:@"bang"];
    NSLog(@"%@",name);
    //移除一个对象
    [name removeObject:@"bang"];
    //移除所有对象
    [name removeAllObjects];

总结

总结
OC中为我们提供了三⼤大容器,数组,字典和集合,三个 容器中存储的都是对象类型。
数组:是一个有序的集合,当我们需要管理有序的一组对 象的时候需要使⽤用数组。
集合:集合是⼀个⽆无序的容器,并且容器中的对象不能够 重复。

在自己选择的路是坚定的走下去!!!!!!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值