OC中數(shù)組、字典和集合解析(一)

容器類中只能存儲對象挚歧,而在OC中屬于容器類的有:數(shù)組扛稽、字典、集合

數(shù)組(數(shù)組是有序的滑负、只能存儲對象在张,但對象類型不限,可以是任意類型的對象矮慕。數(shù)組分為可變數(shù)組和不可變數(shù)組)

#不可變數(shù)組 (數(shù)組的元素不可改變)

創(chuàng)建不可變數(shù)組帮匾,以多個對象初始化不可變數(shù)組,多個對象之間用逗號隔開痴鳄,以空對象結(jié)束

nil 《===》空對象 (相當(dāng)于數(shù)組中的\0瘟斜,代表結(jié)束,如果中間寫nil數(shù)組后面的元素就不會顯示)

//(初始化方法)

NSArray *initArray = [[NSArray alloc]initWithObjects:@"student",@"teacher",@"worker",nil];

NSLog(@"initArray = %@",initArray);

//不可變數(shù)組的遍歷構(gòu)造器方法

NSArray *initArray2 = [NSArray arrayWithObjects:@"xiaohua",@"xiaoming",@"xiaohong",nil];

NSLog(@"initArray2 = %@",initArray2);

//以一個數(shù)組痪寻,初始化一個新的數(shù)組螺句,輸出的內(nèi)容是一樣的(初始化)

NSArray *initArray3 = [[NSArray alloc]initWithArray:initArray2];

NSLog(@"initArray3 = %@",initArray3);

//字面量(初始化)

NSArray *initArray4 = @[@"tangseng",@"wukong",@"bajie"];

NSLog(@"initArray4 = %@",initArray4);

//功能方法

//獲取元素個數(shù)

NSInteger count = [initArray4 count];

NSLog(@"count = %ld",count);? //輸出結(jié)果為3 ,因為上面定義initArray的元素個數(shù)為3個

//獲取指定元素

NSString *str = [initArray4 objectAtIndex:1];

NSLog(@"str = %@",str);? //輸出結(jié)果為wukong因為上面定義的第二個元素為wukong橡类,1代表第二個元素

//字面量? (利用數(shù)組的下標(biāo)獲取)

NSLog(@"2 = %@",initArray4[2]);? //輸出為bajie

//是否包含某個元素

BOOL flag = [initArray4 containsObject:@"shaseng"];

NSLog(@"flag = %d",flag);? //輸出結(jié)果為0蛇尚,因為上面定義的元素里沒有shaseng

//創(chuàng)建一個數(shù)組對象,遍歷數(shù)組中所有元素

NSArray *testArray = @[@"wukong",@18,@"M",@170]; //("M"是合法的)

for (int i =0; i < testArray.count; i++) {

//id是萬能指針顾画,這里不需要加*,他可以接受任意類型的對象,使用id叫做多態(tài)取劫,數(shù)組中經(jīng)常會使用

id object = [testArray objectAtIndex:i];

NSLog(@"object = %@",object);

}

#可變數(shù)組(數(shù)組的元素可以改變)

//創(chuàng)建一個空的可變數(shù)組,并預(yù)留2個元素的空間

NSMutableArray? *mInitArray =[[NSMutableArray alloc]initWithCapacity:2];

NSMutableArray *mInitArray1 = [@[@"校長",@"教授",@"老師"]mutableCopy];

NSLog(@"mInitArray1 = %@",mInitArray1); //輸出的會是\U開頭的加數(shù)字("\U6821\U957f")研侣,不是亂碼谱邪,所以最好數(shù)字里面寫英文

//功能方法

//增

//添加元素

[mInitArray1 addObject:@"專家"];

NSLog(@"mInitArray1 = %@",mInitArray1);

NSMutableArray *mInitArray2 = [@[@"tangseng",@"wukong",@"bajie",@"shaseng"]mutableCopy];

NSLog(@"mInitArray2 = %@",mInitArray2);

//插入元素

//在指定下標(biāo)處插入對象

[mInitArray2 insertObject:@"bailongma" atIndex:1];

NSLog(@"mInitArray = %@",mInitArray2);

//改

//交換 (根據(jù)下標(biāo)來交換,不能根據(jù)對象庶诡,因為一個數(shù)組中可能有很多一樣的對象)

//交換兩個指定下標(biāo)對應(yīng)的對象 (在同一個數(shù)組內(nèi)進(jìn)行交換)

//count-1是代表下標(biāo)-1

[mInitArray2 exchangeObjectAtIndex:0 withObjectAtIndex:mInitArray2.count-1];

NSLog(@"交換后:%@",mInitArray2);

//替換

//利用新對象替換指定下標(biāo)處的對象 (數(shù)組以外的新對象替換數(shù)組以內(nèi)的對象)

[mInitArray2 replaceObjectAtIndex:3 withObject:@"baigujing"];

NSLog(@"替換后的:%@",mInitArray2);

//刪除

//刪除指定對象

//注意:刪除數(shù)組中所有指定對象(數(shù)組中包括的所有“baigujing”都會被刪除)

//? ? [mInitArray2 insertObject:@"baigujing" atIndex:0];

//? ? NSLog(@" mInitArray2 = %@",mInitArray2);

[mInitArray2 removeObject:@"baigujing"];

NSLog(@"刪除后:%@",mInitArray2);

//刪除最后一個對象

[mInitArray2 removeLastObject];

NSLog(@"刪除最后一個對象后:%@",mInitArray2);

//刪除指定下標(biāo)處的對象

[mInitArray2 removeObjectAtIndex:1];

NSLog(@"mInitArray2 = %@",mInitArray2);

//刪除所有的對象 (刪除對象后輸出數(shù)組里的括號還是有的)

[mInitArray2 removeAllObjects];

NSLog(@"刪除所有對象后:%@",mInitArray2);

//分割 (返回時是一個不可變的字符串)

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

//按照指定的字符串虾标,將原有字符串進(jìn)行分割

//分割后的結(jié)果存在數(shù)組中

NSArray *resultArray = [str componentsSeparatedByString:@"."];

NSLog(@"分割后的結(jié)果為:%@",resultArray);

//拼接(返回時是一個不可變的字符串)

//將數(shù)組中的所有元素拼接,各元素之間用指定字符串隔開

//結(jié)果保存在新的字符串中

NSString *resultStr = [testArray componentsJoinedByString:@"--"];

NSLog(@"拼接后的結(jié)果為:%@",resultStr);

#字典 (字典也分為可變字典和不可變字典)

不可變字典

//創(chuàng)建對象

//以多個健值對(條目)創(chuàng)建一個新的字典

//鍵值對不能落單,且以nil結(jié)束

//每一對條目中璧函,值在前傀蚌,鍵在后(輸出后鍵——值方式,且是以大括號括起來)

NSDictionary *initDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"sunwukong",@"name",@18,@"age",@"F",@"sex", nil];

NSLog(@"initDict = %@",initDict);

//字面量

//多個鍵值對之間用逗號隔開

//鍵與值之間用冒號隔開? 鍵在前 蘸吓,值在后

NSDictionary *initDict2 = @{@"name":@"xiaowang",@"age":@10,@"sex":@"M"};

NSLog(@"initDict2 = %@",initDict2);

//功能方法

//獲取條目個數(shù)

NSInteger count = [initDict2 count];

NSLog(@"count = %ld",count);

//字典中只能通過鍵去獲取對應(yīng)的值

//字典中鍵必須是唯一的

//獲取所有的鍵-key

NSArray *allKay = [initDict2 allKeys];

NSLog(@"allKay = %@",allKay);

//獲取所有的值-value

NSArray *allValue = [initDict2 allValues];

NSLog(@"allValue= %@",allValue);

//通過key獲取對應(yīng)的value

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

NSLog(@"name =%@",name);

//字面量

NSLog(@"%@",initDict2[@"age"]);

//創(chuàng)建一個字典

//遍歷字典中的條目

NSDictionary *testDict = @{@"name":@"wukong",@"age":@1000,@"sex":@"M"};

//獲取所有Key值 testKey

NSArray *testKay =[testDict allKeys];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末善炫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子库继,更是在濱河造成了極大的恐慌箩艺,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宪萄,死亡現(xiàn)場離奇詭異艺谆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拜英,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門静汤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人居凶,你說我怎么就攤上這事虫给。” “怎么了侠碧?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵抹估,是天一觀的道長。 經(jīng)常有香客問我弄兜,道長药蜻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任替饿,我火速辦了婚禮语泽,結(jié)果婚禮上盛垦,老公的妹妹穿的比我還像新娘湿弦。我一直安慰自己瓤漏,他們只是感情好腾夯,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蔬充,像睡著了一般蝶俱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饥漫,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天榨呆,我揣著相機(jī)與錄音,去河邊找鬼庸队。 笑死积蜻,一個胖子當(dāng)著我的面吹牛闯割,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竿拆,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼宙拉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丙笋?” 一聲冷哼從身側(cè)響起谢澈,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎御板,沒想到半個月后锥忿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡怠肋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年敬鬓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灶似。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡列林,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酪惭,到底是詐尸還是另有隱情希痴,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布春感,位于F島的核電站砌创,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鲫懒。R本人自食惡果不足惜嫩实,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窥岩。 院中可真熱鬧甲献,春花似錦、人聲如沸颂翼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朦乏。三九已至球及,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呻疹,已是汗流浹背吃引。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人镊尺。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓朦佩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親庐氮。 傳聞我的和親對象是個殘疾皇子吕粗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

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