3大數(shù)據(jù)結(jié)構(gòu)類之——不可變數(shù)組NSArray

OC的數(shù)組同樣分為不可變數(shù)組和可變數(shù)組耀怜,可變數(shù)組是不可變數(shù)組的子類,先來說不可變速數(shù)組

    //1.創(chuàng)建數(shù)組對象
   //創(chuàng)建空的數(shù)組對象
        NSArray * array=@[];//字面量方法
        NSArray * array1=[[NSArray alloc]init];//對應(yīng)的構(gòu)造方法
        NSArray * array2=[NSArray array];//對應(yīng)的類方法
//創(chuàng)建非空數(shù)組
//1.1字面量創(chuàng)建,不同于C語言的數(shù)組咸产,OC的數(shù)組只能存對象
NSArray * arr = @[@1,@2,@3,@4];
NSLog(@"arr(%p) = %@",arr,arr);

//1.2通過構(gòu)造方法創(chuàng)建數(shù)組
NSArray * arr1 = [[NSArray alloc]initWithObjects:@"1",@"2",@"3", nil];
NSLog(@"arr1(%p) = %@",arr1,arr1);
//1.3對應(yīng)的類方法
NSArray * arr2 = [NSArray arrayWithObjects:@"1",@"2",@"3", nil];
NSLog(@"arr2(%p) = %@",arr2,arr2);

//1.4根據(jù)已有的數(shù)組構(gòu)造數(shù)組
NSArray * arr3 = [[NSArray alloc]initWithArray:arr];
 NSLog(@"arr3(%p) = %@",arr3,arr3);
//1.5對應(yīng)的類方法
NSArray * arr4 = [NSArray arrayWithArray:arr];
NSLog(@"arr4(%p) = %@",arr4,arr4);
創(chuàng)建數(shù)組.png

數(shù)組查詢的相關(guān)方法

NSArray * arr = @[@1,@2,@3,@4,@1];
    //根據(jù)數(shù)組元素查看第一個下標(索引)
    NSInteger index = [arr indexOfObject:@1];
    NSLog(@"index = %lu",index);//index = 0
    //在指定范圍內(nèi)查找
    index = [arr indexOfObject:@1 inRange:NSMakeRange(2, 3)];
    if (index == NSNotFound) {
        NSLog(@"沒有這個元素");
    }else{
    NSLog(@"index = %lu",index);//index = 4
    }
    //獲取數(shù)組元素個數(shù)count arr.count是點語法馏颂,可以通過對象點出屬性法焰,其實是調(diào)用了了count方法 [arr count];
    NSLog(@"arr中共有%ld個元素",arr.count);//arr中共有5個元素
    //同C語言一樣址愿,可以直接根據(jù)數(shù)組下標獲取數(shù)組元素
    NSLog(@"arr[3] = %@",arr[3]);//arr[3] = 4
    //數(shù)組越界問題
//    NSLog(@"arr[5] = %@",arr[5]);//數(shù)組中總共只有5個元素,其最大的下標為4
    //查看輸出框中祠墅,reason: '*** -[__NSArrayI objectAtIndex:]: index 5 beyond bounds [0 .. 4]',說的就是數(shù)組的下標范圍是[0 .. 4],5超出范圍侮穿,即越界了
    
    //抽取指定范圍的數(shù)組元素重新組成一個數(shù)組objectsAtIndexes:<#(nonnull NSIndexSet *)#>,參數(shù)是一個集合
    //創(chuàng)建一個數(shù)字集合對象,集合中為{2毁嗦,3亲茅,4}
    NSIndexSet *set=[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(2, 3)];
    NSArray * array = [arr objectsAtIndexes:set];
    NSLog(@"array = %@",array);// array = (3,4,1)
數(shù)組越界.png
數(shù)組查詢.png

數(shù)組枚舉相關(guān)方法

NSArray * arr = @[@1,@2,@3,@4,@1];
    //枚舉器,枚舉器是用來讀數(shù)據(jù)的
    //創(chuàng)建一個正序枚舉器
    NSEnumerator * enumerator =[arr objectEnumerator];
    id obj;
    NSLog(@"正序枚舉");
    while (obj = [enumerator nextObject]) {
        NSLog(@"%@",obj);
//        2016-05-22 15:28:56.460 OC數(shù)組[972:58313] 1
//        2016-05-22 15:28:56.461 OC數(shù)組[972:58313] 2
//        2016-05-22 15:28:56.462 OC數(shù)組[972:58313] 3
//        2016-05-22 15:28:56.462 OC數(shù)組[972:58313] 4
//        2016-05-22 15:28:56.462 OC數(shù)組[972:58313] 1
    }
    NSLog(@"快速枚舉");
    //快速枚舉(正序)狗准,for in循環(huán)克锣,id = void *,可以指向任意類型的指針
    for (id obj in arr) {
        NSLog(@"%@",obj);
//        2016-05-22 15:25:24.444 OC數(shù)組[962:56523] 1
//        2016-05-22 15:25:24.445 OC數(shù)組[962:56523] 2
//        2016-05-22 15:25:24.445 OC數(shù)組[962:56523] 3
//        2016-05-22 15:25:24.445 OC數(shù)組[962:56523] 4
//        2016-05-22 15:25:24.445 OC數(shù)組[962:56523] 1
    }
    NSLog(@"逆序枚舉");
    //逆序枚舉器
    NSEnumerator * enumerator1= [arr reverseObjectEnumerator];
    while (obj = [enumerator1 nextObject])
    {
         NSLog(@"%@",obj);
        /*
        2016-05-22 15:32:33.511 OC數(shù)組[986:59874] 1
        2016-05-22 15:32:33.511 OC數(shù)組[986:59874] 4
        2016-05-22 15:32:33.511 OC數(shù)組[986:59874] 3
        2016-05-22 15:32:33.511 OC數(shù)組[986:59874] 2
        2016-05-22 15:32:33.511 OC數(shù)組[986:59874] 1*/
    }

數(shù)組字符串轉(zhuǎn)換

//字符串分割到數(shù)組
    NSString * string = @"Yes ,I'm a good man! What's you?";
    //
    NSArray * arr1 =[string componentsSeparatedByString:@" "];//以@" "作為分隔符切割字符串腔长,切割下來的子串添加到數(shù)組作為數(shù)組元素
    NSLog(@"arr1 = %@",arr1);
    //以字符集合作為分割條件
    //先創(chuàng)建字符集合
    NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@" ,!"];
    //componentsSeparatedByCharactersInSet,把set作為參數(shù)進行分隔
    NSArray * arr2 = [string componentsSeparatedByCharactersInSet:set];
    NSLog(@"arr2 = %@",arr2);
    
    //把數(shù)組元素拼接成字符串
    NSString * str = [arr1 componentsJoinedByString:@" "];
    NSLog(@"str = %@",str);//str = Yes ,I'm a good man! What's you?
數(shù)組字符串轉(zhuǎn)換.png

圖片說明有點錯誤:""出現(xiàn)時因為字符集合作為切割條件的時候袭祟," "和","是相鄰的,這個位置切割了2次饼酿,后面的也是同樣的道理


喜歡的話榕酒,幫忙點一下喜歡胚膊,謝謝!
如果有錯誤之處或者偏差故俐,還請斧正!
歡迎大家留言提問,技術(shù)要交流才能更快成長紊婉!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末药版,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子喻犁,更是在濱河造成了極大的恐慌槽片,老刑警劉巖何缓,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異还栓,居然都是意外死亡碌廓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門剩盒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谷婆,“玉大人,你說我怎么就攤上這事辽聊〖涂妫” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵跟匆,是天一觀的道長异袄。 經(jīng)常有香客問我,道長玛臂,這世上最難降的妖魔是什么烤蜕? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮垢揩,結(jié)果婚禮上玖绿,老公的妹妹穿的比我還像新娘。我一直安慰自己叁巨,他們只是感情好斑匪,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锋勺,像睡著了一般蚀瘸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庶橱,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天贮勃,我揣著相機與錄音,去河邊找鬼苏章。 笑死寂嘉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的枫绅。 我是一名探鬼主播泉孩,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼并淋!你這毒婦竟也來了寓搬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤县耽,失蹤者是張志新(化名)和其女友劉穎句喷,沒想到半個月后镣典,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡唾琼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年兄春,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锡溯。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡神郊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出趾唱,到底是詐尸還是另有隱情涌乳,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布甜癞,位于F島的核電站夕晓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏悠咱。R本人自食惡果不足惜蒸辆,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望析既。 院中可真熱鬧躬贡,春花似錦、人聲如沸眼坏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宰译。三九已至檐蚜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沿侈,已是汗流浹背闯第。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缀拭,地道東北人咳短。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像蛛淋,于是被迫代替她去往敵國和親咙好。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

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