容器类(数组 集合 字典)

数组:

系统提供的数组类:类似于C语言中的数组功能。

数组是一个大容器,数组中可以储存不同的联系对象,但必须要保证数组中储存的都是对象。

OC中提供了两类数组:一类是NSArray(不可变的数组),一类是NSMtableArray(可变数组)

可变与不可变的区别:可变意味着可以对原有对象进行操作,不可变就意味着一旦创建,内容就不可变。

                                        不可变数组

(1)使用初始化方法创建数组

NSArray *array = [NSArray  alloc] initWithObjects:@"yangyu",@"yabaobao",@"dashazi",nil];

( 2 )使用便利构造器方法创建方法

NSArray *array = [NSArray arrayWithObjects:@"yangyu",@"yabaobao",@"dashazi",nil];

( 3 ) 字面量方法

NSArray *array = @[@"haha",@"lala",@"dadda"];

/******数组元素个数******/

NSUInteger *count = array.count;

/******获取数组元素*****/

NSString *name1 = [array objectAtIndex:0];

/****获取数组元素字面量取法****/

NSString *name2 = array[2];

NSString *name3 = [array firstObject];

//数组元素为空的时候 ,使用firstObject以及lastObject保护程序的安全,不会崩溃,返回值是nil,但使用ObjectAtIndex时,如果数组为空,则程序崩溃。

NSArray *nameArrayOne = [NSArray  arrayWithObject:@"yuabobao",@"yagnbaobao",@"luboaboa",nil];

NSArray *nameArrayTwo = [NSArray  arrayWithObject:@"xioapingguo",@"pig",@"monkey",nil];

//查找 yangbaobao对应的下标

NSUInteger index = [nameArrayOne  indexObject:@"yangbaobao"];

//判断数组中是否包含某个对象

BOOL  isTure = [nameArrayOne containsObject:@"yubaobao"];

//判断两个数组是否相等

BOOL ieEqual = [nameArrayOne  isEqualToArrayTwo];

//NSArray 和 NSString 之间转换

NSString *string = @"www.lanou3g.com";

NSArray *array = [string componentsSeparatedByString:@"."];

NSLOg(@"%@",array);

//数组到字符串

NSArray *myArray = [NSArray arrayWithObjecta:@"北京",@"上海",@"广州",@"郑州",nil];

NSString *myString  = [myArray componentsByString:@"&"];

                           可变数组

以下方式都是创建一个可变空数组后再开辟容量为x的空间,数字x为几开辟容量为x的空间;

Capacity:后面的数字。就是先开辟一个空间,用完

NSmutableArray *myArray = [NSMutableArray  alloc] initWithCapacity:1];

NSmutableArray *youArray = [NSMutableArray  arrayWithCapacity:1];

NSmutableArray *bigArray = [NSMutableArray  array];

//添加一个数据

addObject:在数组的最后面添加

[bigArrat addObject:@"lanOu"];

//在指定位置插入一个元素

[bigArray insertObject:@"beijing" atIndex:1];

//删除(删除指定元素 主要是这个对象 ,有多少删多少)

[bigArray removeObject:@"beijing"];

[bigArray removeObjectAtIndex:0];

//替换元素

[bigArray relaceObjectAtIndex:0 withObject@"shanghai"];

//交换指定位置的两个元素

[bigArray exchangeObjectAtIndex:1  withObject:2];

//删除全部

[bigArray removeAllObject];

         集合

集合 *不可变*

特点:无序性 互异性,本质上是一个大容器

NSSet *mySet = [[NSSet alloc]initWithObjects@:"aa",@"bb",@"cc",@"bb",@"dd",@"cc",nil];

//元素个数

NSUInteger count = mySet.count;

/获取集合中的元素

NSString *string1 = [mySet AnyObject];

//NSArray *myArraty = mySet.allObjects;

               可变集合

可变集合占内存

NSMutableSet *mySet = [[NSMutableSet alloc]initWithObjects:@"aa",@"bb",nil];

//添加元素

[mySet addObject:@"cc"];

[mySet addObject:@"bb"];

//删除元素

[mySet removeObject:@"aa"];

字典(不可变)

字典:用来储存具有一一对应关系的数据,本质上也是一个大容器

字典里的数据成对存在。

字典本身是无序的但key->value 一一对应是有序的

NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"xiaoYaLi",@"name",@"nan",@"sex",nil];

NSString *name = [dic objectForKey:@"name"];

NSString *sex = [dic objectForKey:@"sex"];

//便利构造器方法

NSDictionary *dic = [NSDictionary dictionaryWithObjectaAndKeys:@"yaLibaoabo",@"name",@"nan",@"sex", nil];

字面量

NSDictonary *dic2 = @{@"name",@"xioaYaLi",@"sex",nan};

//key->value 一 一对应。

/*********字典元素个数**********/

NSUInteger count = dic.2.count;

/***********将字典中所有的value放到一个数组中**********/

NSArray *value = dic2.allValues;

//字典取值

NSString *value = ]dic2 objectForKey:@"name"];

NSString *sex = [dic2 objecForKey:@"sex"];

//判断字典是否为空;

BOOL a = dic2.allKeys.count == 0;

                可变字典

NSMutableDictionary *dic2 = [NSMutableDictionary alloc] initWithObjectsAndKeys:@"zhangsan",@"name",@"nan",@"sex",nil];

//字典增加一个元素

[dic setObject:@"18" forKey:@"age"];

[dic setObject:@"jianzhou" forKey:@"city"];

//修改名字

[dic setObject:@"xioaYaLi" forKey:@"name"];

setObject: forKey: 工作原理:县查找字典有没有对应的key值,如果有,则修改key对应的value;如果没有则把key-value作为元素添加到字典中。

//移除元素

dic removeObjectforKey:@"city"];

//移除所有元素

[dic removeAllObject];


                    /********数组,字典,集合的区别********/

相同点:都是oc中容器类,可以储存多个元素,但是元素必须是对象,不限制对象 的类型。

不同点:

1:使用场景:

数组:用来管理一组有序的元素集合

字典:用来管理一组具有一一对应关系的数据的集合

集合:用来管理一组无序,并具有互异性的元素的集合

2:特点

数组:有序,并且元素可以重复使用。

字典:无序,key——value是在字典的一个元素,key是唯一的,一个key只能对应一个value,但是一个value可以对应多个key。

集合:无序,元素具有互异性

3:取值方式

数组:通过下标获取 元素

字典:通过key值,获取元素;

集合:anyObject获得一个数组 forin遍历

数组嵌套数组

NSMutableArray * array1 = [NSMutableArray arrayWithObjects:@"11",@"222",@"3333", nil];

      NSMutableArray * array2 = [NSMutableArray arrayWithObjects:@"22",@"333",@"1234", nil];

 NSMutableArray * array = [NSMutableArray array];

 [array addObject:array1];

 [array addObject:array2];

  NSLog(@"%@",array);

NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"name", nil];

NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lisi",@"name", nil];

 [array addObject:dic1];

[array addObject:dic2];

 NSMutableDictionary *dic3 = array[3];

创建一个空字典

NSMutableDictionary *myDic = [NSMutableDictionary dictionary];

[myDic setObject:array1 forKey:@"one"];

[myDic setObject:array2 forKey:@"two"];

 [myDic setObject:dic1 forKey:@"three"];

 [myDic setObject:dic2 forKey:@"four"];

 更加说明了字典是无序的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 数组 1、固定数组 2、可变数组 3、数组转换 字典 1、不可变字典 2、可变字典 集合 //NSSet 是无序的...
    孙玮超阅读 14,086评论 0 13
  • 数组 1、固定数组 1.创建数组(不可变数组创建后不可变,在创建的时候要初始化)//对象方法 [[NSArray ...
    Maxfire阅读 2,074评论 0 1
  • 1. 熟悉Git的基本流程 git clone git add -A git commit -m " " git ...
    9bf19a4010ab阅读 1,612评论 0 2
  • 一、类和对象 1.定义:类是具有相同特征和行为的事物的抽象,对象是类的具体化,类是对象的类型。 2.面向对象的三大...
    陈亮宇阅读 373评论 1 6
  • 一、数组类 数组是一个有序的集合,OC中的数组只能储存对象类型,但是对于对象的类型没有限制。 通过下标访问数组元素...
    刘可爱最可爱阅读 337评论 0 0