Objective-C day5 集合(17-07-31)

OC中的集合包括:數(shù)組類 字典類 集合類
##數(shù)組:
1.數(shù)組是一個有序的集合,OC中的數(shù)組只能存儲對象類型,但是對于對象的類型沒有限制。
2.通過下標訪問數(shù)組元素,下標從0開始。
3.NSArray:不可變數(shù)組,即:對象創(chuàng)建好以后,數(shù)組中元素個數(shù)不能發(fā)生變化。
4.NSMutableArray:可變數(shù)組,即對象創(chuàng)建好以后,數(shù)組中的元素可以靈活進行增刪改操作。
5.OC中的數(shù)組只能存儲對象類型,不能存儲int float這些基礎類型
####NSArray創(chuàng)建方法:
不可變數(shù)組:不能改變元素個數(shù)
注:nil作為數(shù)組存放元素的結束標志,多個元素通過逗號間隔。

    //初始化方法
   NSArray *name = [[NSArray alloc] initWithObjects:@"dark",@"monkey", nil];
   NSLog(@"%@",name);
    ///便利構造器
    NSArray *name1 = [NSArray arrayWithObjects:@"dark",@"monkey", nil];
   NSLog(@"%@",name1);
    // 字面量
    NSArray *name3 = @[@"monkey",@"dark"];
     NSLog(@"%@",name3);

#### NSArray常用的方法

 //獲取對象的個數(shù)
    NSLog(@"%ld",name3.count);
    //從數(shù)組中去索引位置的對象
    NSLog(@"%@",[name objectAtIndex:0]);
    NSLog(@"%@",name[0]);
    //判斷數(shù)組中是否有某一指定對象
    if ([name containsObject:@"duck"]) {
        NSLog(@"YES");
    }else{
        NSLog(@"NO");
    }
    //獲取數(shù)組元素中對象對應的索引值
    NSLog(@"%ld",[name indexOfObject:@"dark"]);
    //
    //將 網(wǎng)址 放到數(shù)組中    截取
    NSString *string = @"www.baidu.com";
    NSArray  *array = [string componentsSeparatedByString:@"."];
    NSLog(@"%@",array);
    //將數(shù)組中的元素拼接在一起 成字符串
    NSString *string1 = [name1 componentsJoinedByString:@"&"];
    NSLog(@"%@",string1);

####NSMutableArray 可變數(shù)組
創(chuàng)建方法

//初始化
    NSMutableArray *marray = [[NSMutableArray alloc] initWithCapacity:0];
   // NSLog(@"%@",marray);
    NSMutableArray *marray1 = [NSMutableArray arrayWithCapacity:0];
    //字面量(不可變數(shù)組拷貝一份可變的副本)
    NSMutableArray *marray2 = [@[@"frank",@"duck",@"monkey"] mutableCopy];
    NSLog(@"%@",marray2);

####NSMutableArray 常用的方法

//在數(shù)組中添加一個對象(在數(shù)組的末尾處)
    [marray2 addObject:@"pander"];
    NSLog(@"%@",marray2);
    [marray addObject:@"cat"];
    NSLog(@"%@",marray);
    [marray1 addObject:@"dog"];
    NSLog(@"%@",marray1);
    //在數(shù)組的指定位置添加一個對象
    [marray1 insertObject:@"mouse" atIndex:1];
    NSLog(@"%@",marray1);
    //在數(shù)組中移除一個對象(根據(jù)內存地址判定)
    [marray2 removeObject:@"duck"];
    NSLog(@"%@",marray2);
    //移除數(shù)組中的最后一個對象
    [marray2 removeLastObject];
     NSLog(@"%@",marray2);
    //移除數(shù)組中全部對象
    [marray2 removeAllObjects];
    NSLog(@"%@",marray2);
    //移除數(shù)組中指定位置的對象
    [marray1 removeObjectAtIndex:1];
    NSLog(@"%@",marray1);
    //將數(shù)組中指定對象替換到指定位置(將mouse替換到下標為0的位置)
    [marray1 replaceObjectAtIndex:0 withObject:@"mouse"];
    NSLog(@"%@",marray1);
     [marray1 addObject:@"dog"];
    [marray1 addObject:@"car"];
    //將兩個指定位置的對象交換
    [marray1 exchangeObjectAtIndex:0 withObjectAtIndex:2];
    NSLog(@"%@",marray1);

##字典
1.字典是一個無序的集合,用來存儲具有一一對應關系的數(shù)據(jù)。
2.字典中存儲的每一個對象都是一對鍵值對,鍵值對包含兩個部分key和value,key與value的值都是對象類型。
3.對于每一對key-value稱為一個條目(Entry)。
字典到特點:
1.與數(shù)組不同,字典靠key存取元素。
2.key與value必須都是對象類型。
3.字典中鍵值對的存儲是無序的。
4.字典分為兩種類型不可變字典(NSDictionary),可變字典(NSMutableDictionary)。
####NSDictionary創(chuàng)建方法
//創(chuàng)建一個字典 (key和 value要求都是對象類型,key通常都是字符串且都是唯一的 不允許出現(xiàn)兩個相同的key)

    //初始化方法   有key和value值
    NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"frank",@"name1",@"duck",@"name2", nil];
    NSLog(@"%@",dictionary);
    // 便利構造器
    NSDictionary *dictionary1 = [NSDictionary dictionaryWithObjectsAndKeys:@"frank",@"name1",@"monkey",@"name2", nil];
    NSLog(@"%@",dictionary1);
    //字面量 用@{}
    NSDictionary *dictionary2 = @{@"name3":@"dog",@"name4":@"car"};
    NSLog(@"%@",dictionary2);

####NSDictionary常用方法

//獲取字典中的鍵值對數(shù)
    NSLog(@"%ld",dictionary2.count);
    //字典到一種便利方式
    NSArray *keyArray = dictionary.allKeys;
    for (int i =0; i<keyArray.count; i++) {
        NSString *key = keyArray[i];
        NSString *value = [dictionary1 objectForKey:key];
        NSLog(@"--key = %@,--value = %@",key,value);
    }
    //獲取字典中所有key
    NSLog(@"%@",dictionary2.allKeys);
    //獲取字典中所有values
    NSLog(@"%@",dictionary2.allValues);
    //根據(jù)健找到對應的values值
    NSString *anAttribute = [dictionary2 objectForKey:@"name3"];
    NSString *anAttribute1 = dictionary2[@"name3"];
    NSLog(@"%@",anAttribute);
    NSLog(@"%@",anAttribute1);

NSMutableDictionary創(chuàng)建方法

//初始化
    NSMutableDictionary *mdictionary = [[NSMutableDictionary alloc] initWithCapacity:0];
 NSMutableDictionary *mdictionary4 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name7"@"pand",@"name8"@"tig", nil];
    //便利構造器
    NSMutableDictionary *mdictionary1 = [NSMutableDictionary dictionaryWithCapacity:0];
 //字面量
    NSMutableDictionary *mdictionary2 = [@{@"name5":@"pander",@"name6":@"tiger"}mutableCopy];
// 創(chuàng)建一個空數(shù)組
    NSMutableDictionary *mdictionary3 = [NSMutableDictionary dictionary];

NSMutableDictionary 常用方法

//在字典中將指定鍵值對的Values值替換
    [mdictionary2 setObject:@"duck" forKey:@"name5"];
    NSLog(@"%@",mdictionary2);
     //移除指定鍵值對
    [mdictionary2 removeObjectForKey:@"name6"];
    NSLog(@"%@",mdictionary2);
    //移除所有鍵值對
    [mdictionary2 removeAllObjects];
    NSLog(@"%@",mdictionary2);

##NSSet
集合作為OC中另一個容器,開發(fā)過程中使用的范圍并沒有數(shù)組和字典頻繁。OC中的集合分為不可變集合(NSSet)和可變集合(NSMutableSet)兩種.
集合的特點:
1.互異性 集合中不能夠存在兩個相同的對象。
2.無序性 集合中的對象沒有順序,先添加的對象不一定在集合中的第一個位置,后添加的也不一定在最后的位置。
3.集合經(jīng)常用來處理重用問題。

    // 初始化
    NSSet *set = [[NSSet alloc] initWithObjects:@"duck",@"monkey",@"tiger", nil];
    //便利構造器
    NSSet *set1 = [NSSet setWithObjects:@"dog",@"car", nil];
    //獲取集合中對象的個數(shù)
    NSLog(@"%ld",set.count);
    //獲取集合中所有的對象
    NSLog(@"%@",set1.allObjects);
    //從集合中取出一個對象
   NSString *c = [set anyObject];
    NSLog(@"---%@",c);
   //判斷集合中是否有指定對象
   NSInteger b = [set containsObject:@"duck"];
    NSLog(@"------%ld",b);
    
    //NSMutableSet
    //初始化
    NSMutableSet *mset = [[NSMutableSet alloc] initWithCapacity:0];
    //便利構造器
    NSMutableSet *mset2 = [NSMutableSet setWithCapacity:0];
    //添加對象
    [mset addObject:@"fank"];
    NSLog(@"%@",mset);
    //移除指定對象
    [mset removeObject:@"fank"];
    NSLog(@"%@",mset);
    //移除所有對象
    [mset2 addObject:@"duck"];
    [mset2 removeAllObjects];
    NSLog(@"%@",mset2);
    ```
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言 3月27號蘋果發(fā)布了Swift3.1,官方教程也更新到了3.1,查看更新記錄發(fā)現(xiàn)更新的內容對之前的文章并沒有...
    BoomLee閱讀 3,163評論 0 4
  • 發(fā)現(xiàn)處處周到的人,總是容易被忽視,大概是一群人最不舒服的人。所以說現(xiàn)在很多人愿意說想去做一個不合群的人,我覺得說的...
    須臾一瞬L閱讀 191評論 0 0
  • 今早醒來已經(jīng)是九點,洗漱下樓發(fā)現(xiàn)已經(jīng)下起小雨,懶于上樓取傘,直接去公司,走到西二旗橋下,如愿看到一排單車,開心。開...
    廢柴芬格爾閱讀 220評論 2 1