容器類(數(shù)組 集合 字典)

數(shù)組:

系統(tǒng)提供的數(shù)組類:類似于C語言中的數(shù)組功能。

數(shù)組是一個(gè)大容器,數(shù)組中可以儲(chǔ)存不同的聯(lián)系對(duì)象,但必須要保證數(shù)組中儲(chǔ)存的都是對(duì)象。

OC中提供了兩類數(shù)組:一類是NSArray(不可變的數(shù)組),一類是NSMtableArray(可變數(shù)組)

可變與不可變的區(qū)別:可變意味著可以對(duì)原有對(duì)象進(jìn)行操作,不可變就意味著一旦創(chuàng)建,內(nèi)容就不可變。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不可變數(shù)組

(1)使用初始化方法創(chuàng)建數(shù)組

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

( 2 )使用便利構(gòu)造器方法創(chuàng)建方法

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

( 3 ) 字面量方法

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

/******數(shù)組元素個(gè)數(shù)******/

NSUInteger *count = array.count;

/******獲取數(shù)組元素*****/

NSString *name1 = [array objectAtIndex:0];

/****獲取數(shù)組元素字面量取法****/

NSString *name2 = array[2];

NSString *name3 = [array firstObject];

//數(shù)組元素為空的時(shí)候 ,使用firstObject以及l(fā)astObject保護(hù)程序的安全,不會(huì)崩潰,返回值是nil,但使用ObjectAtIndex時(shí),如果數(shù)組為空,則程序崩潰。

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

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

//查找 yangbaobao對(duì)應(yīng)的下標(biāo)

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

//判斷數(shù)組中是否包含某個(gè)對(duì)象

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

//判斷兩個(gè)數(shù)組是否相等

BOOL ieEqual = [nameArrayOne ?isEqualToArrayTwo];

//NSArray 和 NSString 之間轉(zhuǎn)換

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

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

NSLOg(@"%@",array);

//數(shù)組到字符串

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

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

? ? ? ? ? ? ? ? ? ? ? ? ? ?可變數(shù)組

以下方式都是創(chuàng)建一個(gè)可變空數(shù)組后再開辟容量為x的空間,數(shù)字x為幾開辟容量為x的空間;

Capacity:后面的數(shù)字。就是先開辟一個(gè)空間,用完

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

NSmutableArray *youArray = [NSMutableArray ?arrayWithCapacity:1];

NSmutableArray *bigArray = [NSMutableArray ?array];

//添加一個(gè)數(shù)據(jù)

addObject:在數(shù)組的最后面添加

[bigArrat addObject:@"lanOu"];

//在指定位置插入一個(gè)元素

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

//刪除(刪除指定元素 主要是這個(gè)對(duì)象 ,有多少刪多少)

[bigArray removeObject:@"beijing"];

[bigArray removeObjectAtIndex:0];

//替換元素

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

//交換指定位置的兩個(gè)元素

[bigArray exchangeObjectAtIndex:1 ?withObject:2];

//刪除全部

[bigArray removeAllObject];

? ? ? ? ?集合

集合 *不可變*

特點(diǎn):無序性 互異性,本質(zhì)上是一個(gè)大容器

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

//元素個(gè)數(shù)

NSUInteger count = mySet.count;

/獲取集合中的元素

NSString *string1 = [mySet AnyObject];

//NSArray *myArraty = mySet.allObjects;

? ? ? ? ? ? ? ?可變集合

可變集合占內(nèi)存

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

//添加元素

[mySet addObject:@"cc"];

[mySet addObject:@"bb"];

//刪除元素

[mySet removeObject:@"aa"];

字典(不可變)

字典:用來儲(chǔ)存具有一一對(duì)應(yīng)關(guān)系的數(shù)據(jù),本質(zhì)上也是一個(gè)大容器

字典里的數(shù)據(jù)成對(duì)存在。

字典本身是無序的但key->value 一一對(duì)應(yīng)是有序的

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

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

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

//便利構(gòu)造器方法

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

字面量

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

//key->value 一 一對(duì)應(yīng)。

/*********字典元素個(gè)數(shù)**********/

NSUInteger count = dic.2.count;

/***********將字典中所有的value放到一個(gè)數(shù)組中**********/

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];

//字典增加一個(gè)元素

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

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

//修改名字

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

setObject: forKey: 工作原理:縣查找字典有沒有對(duì)應(yīng)的key值,如果有,則修改key對(duì)應(yīng)的value;如果沒有則把key-value作為元素添加到字典中。

//移除元素

dic removeObjectforKey:@"city"];

//移除所有元素

[dic removeAllObject];


? ? ? ? ? ? ? ? ? ? /********數(shù)組,字典,集合的區(qū)別********/

相同點(diǎn):都是oc中容器類,可以儲(chǔ)存多個(gè)元素,但是元素必須是對(duì)象,不限制對(duì)象 的類型。

不同點(diǎn):

1:使用場景:

數(shù)組:用來管理一組有序的元素集合

字典:用來管理一組具有一一對(duì)應(yīng)關(guān)系的數(shù)據(jù)的集合

集合:用來管理一組無序,并具有互異性的元素的集合

2:特點(diǎn)

數(shù)組:有序,并且元素可以重復(fù)使用。

字典:無序,key——value是在字典的一個(gè)元素,key是唯一的,一個(gè)key只能對(duì)應(yīng)一個(gè)value,但是一個(gè)value可以對(duì)應(yīng)多個(gè)key。

集合:無序,元素具有互異性

3:取值方式

數(shù)組:通過下標(biāo)獲取 元素

字典:通過key值,獲取元素;

集合:anyObject獲得一個(gè)數(shù)組 forin遍歷

數(shù)組嵌套數(shù)組

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];

創(chuàng)建一個(gè)空字典

NSMutableDictionary *myDic = [NSMutableDictionary dictionary];

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

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

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

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

?更加說明了字典是無序的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 數(shù)組 1、固定數(shù)組 2、可變數(shù)組 3、數(shù)組轉(zhuǎn)換 字典 1、不可變字典 2、可變字典 集合 //NSSet 是無序的...
    孫瑋超閱讀 14,147評(píng)論 0 13
  • 數(shù)組 1、固定數(shù)組 1.創(chuàng)建數(shù)組(不可變數(shù)組創(chuàng)建后不可變,在創(chuàng)建的時(shí)候要初始化)//對(duì)象方法 [[NSArray ...
    Maxfire閱讀 2,160評(píng)論 0 1
  • 1. 熟悉Git的基本流程 git clone git add -A git commit -m " " git ...
    9bf19a4010ab閱讀 1,699評(píng)論 0 2
  • 一、類和對(duì)象 1.定義:類是具有相同特征和行為的事物的抽象,對(duì)象是類的具體化,類是對(duì)象的類型。 2.面向?qū)ο蟮娜?..
    陳亮宇閱讀 403評(píng)論 1 6
  • 一、數(shù)組類 數(shù)組是一個(gè)有序的集合,OC中的數(shù)組只能儲(chǔ)存對(duì)象類型,但是對(duì)于對(duì)象的類型沒有限制。 通過下標(biāo)訪問數(shù)組元素...
    劉可愛最可愛閱讀 374評(píng)論 0 0