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

                                 }

                    }

                    数组排序取决与推断条件,推断条件决定了排序方式(升序、降序)
posted @ 2017-08-01 08:44  mfmdaoyou  阅读(121)  评论(0编辑  收藏  举报