首页 > 代码库 > OC第五课

OC第五课

主要内容:字典、集合、数组排序

一、字典

       示例:

               name : @" 张三 " ;sex:@" 男 " ; age :@" 21 " ;

               思考:怎么用字典保存?

       字典:用于保存具有映射关系(key - value对)数据的集合,对于张三来说,key就是name,男来说,sex就是key

       一个key - value对认为是一个条目,字典是存储key - value对的容器

       与数组不同,字典靠key存取元素,key不能重复,value必须是对象(value可以重复),键值对在字典中的存储是无序的

       字典同样分为可变字典(NSMutableDictionary)、不可变字典(NSDictionary)

       不可变字典(NSDictionary):

       不可变字典一旦创建,键值对就不可更改、不可添加、不可删除,只能读取key或者value

       创建字典对象(三种方法):

                     便利构造器:NSDictionary  *dict1 = [ [ NSDictionary  dictionaryWithObjects : @[@"af", @"afaf", @"adada"]  forkeys : @[ @"first", @"second" , @"three"] ] ;

                     初始化方法:NSDictionary  *dict2 = [ [ NSDictionary  alloc] initWithObjectsAndKeys : @"first" , @"afdaf" , 

                                                                                                                                                @"second" , @"afadx" ] ;

                      字面量:NSDictionary  *dict3 = @{@"first" : @"aex",

                                                                             @"second" : @"af", } ;

       常用方法:

              1、获取所有的key值

                           [ dict1 allKeys ] ;

              2、获取所有的value值

                           [ dict1  allValues ] ;

              3、通过key值查询value

                           [ dict1  ObjectForKey : @"first" ] ;

       可变字典(NSMutableDictionary):

              不可变字典(NSDictionary)的子类

              可以进行增删改查的操作

      常用方法:

              1、添加键值对

                           [ dict2  addEntriesFromDictionary : @{@"other" : @"afa" } ] ; / / 作用是将一个字典中的键值对放入另一个字典中

                           [ dict2  setObject : @"other"  forKey : @"axea" ] ;

              2、修改key对应的值

                           [ dict2  setObject : @"afas"  forKey : @"first" ] ;

              3、删除键值对

                          [ dict2 removeObjectForKey : @"first" ] ;

                          [ dict2  removeAllObject ] ; / / 删除全部键值对

              4、通过for循环遍历所有的键值对

                           for ( NSDictionary  *obj  int  dict3 ) {   / / 快速遍历方法

                                   NSLog ( @" %@ " , obj) ; / / 快速遍历对字典来说,默认打印key值

                           }

二、集合

       与数学中的集合一样,集合中的元素 “ 唯一 ”

       元素是无序的,并且元素必须是对象,同样分为NSSet(不可变集合)、NSMutableSet(可变集合)

       如果想从集合中取出元素,只能随机取出一个

       NSSet(不可变集合):

                创建集合:NSSet  *sets = [ NSSet  setWithObjects : @"b" , @"c" , @"a", @"d", nil ] ;

       常用方法:

              1、获取元素个数    count

                              [ sets  count ] ;

              2、获取集合中的一个元素       anyObject

                             [ sets  anyObject ] ;

              3、判断集合中是否包含某个元素       containObject

                             [ sets  containsObject ] ;

三、集合类型的快速枚举

       for ( <#type  *object#> in <#collection#>){

       }

       object是遍历得到的元素对象

       collection是集合类型的对象:数组、字典、集合

       特点:

               数组枚举得到数组中的元素对象、

               字典枚举得到字典中的key值、

               集合枚举得到集合中的元素对象

四、数组排序

       原来学的冒泡排序

              示例:

                       int  array[10] = { 2, 5, 4, 7, 6, 3} ;

                       for (int i = 0; i < 6 - 1 ; i++){

                                 for(int j = 0; j < 6 - 1 - i ; j++){

                                             int temp = array[ j ] ;

                                             array[ j ] = array[ j + 1 ] ;

                                             array[ j + 1 ] = temp ;

                                 }

                       }

                      for(int i = 0 ; i < 6 ; i++){

                                  printf("%d" , a[ i ]) ;

                      }

      数组排序:

                    for (int i = 0; i < 6 - 1 ; i++){

                                 for( 判断条件 ){

                                            [array  exchangeObjectAtIndex : j WithObjectAtIndex : j + 1 ] ;

                                 }

                    }

                    数组排序取决与判断条件,判断条件决定了排序方式(升序、降序)

OC第五课