objective-C基础----字典,集合

来源:互联网 发布:网络名词 编辑:程序博客网 时间:2024/05/08 18:32
字典
        字典用于保存具有映射关系(key - value)的数据的集合
    对于name:张三 来讲,name就是keykey对应的value就是张三
    一个key-value的组合被认为是一个条目,字典是存储key-value对的容器
         特点:
  1、与数组不同,字典靠key来存储数据,数组是通过下标存储元素
  2key不能重复,value必须是对象,(如果不是对象,有NSNumberNSValue
  3、键值对在字典中是无序存储的
  4、字典也有可变和不可变之分
  5、不可变字典,字典一旦创建,键值对就不能修改,不可删除,不可添加。仅能读取keyvalue
  6、字典中元素是成对出现的,不能出现单个元素个数

//可变字典
       //添加、修改、删除
        [mdic
setObject:@"Mac mini"forKey:@"电脑"]; //电脑---key     mini  --- value
        [mdic
setValue:@"发夹"forKey:@"饰品"];
       
//修改key对应的value
        [mdic setValue:@"OPPO"forKey:@"手机"];
       //setValue: forKey   什么时候添加新键值对   什么时候修改键值对
        当字典中的没有这个key值的时候,setValue: forKey就是添加新的键值对
        当字典中有这个key的时候,setValue: forKey 就是修改相应的key下边对应的value
       
NSMutableArray *key1 = mdic.allKeys;
       
NSMutableArray *value5 = mdic.allValues;
       
for (inti = 0; i < mdic.count; i++) {
           
NSLog(@"key = %@  value = %@",[key1objectAtIndex:i], [value5objectAtIndex:i]);
        }
       
//删除
        [mdic
removeObjectForKey:@"电脑"];


       //通过keyvalue
       
NSMutableArray *keyof = mdic.allKeys;
       
for (inti = 0; i < mdic.count; i++) {
           
NSLog(@"key = %@  value = %@",keyof[i], [mdic valueForKey:keyof[i]]);
        }
---------------------------------------------------------------------------
集合
     iOS中也有表示数学中表示集合的类,叫做NSSet
    集合的特点
     1、与数学中的集合我一样,集合中元素是唯一的(不能重复)
     2、集合中元素是无序存储的
     3、集合中元素必须是对象类型(如果是基本数据类型需要通过NSNumberNSValue转化为对象类型)
     4iOS中集合有可变和不可变之分:NSSet NSMutableSet
        
       NSSet *set = [[NSSetalloc]initWithObjects:@"shmily",@"豫剧",@"河南梆子",@"123456",@"粤剧",@"京剧",nil];
       //获取集合元素个数,重复的元素会被覆盖,只算一个    ---------- 集合最大的特点
       NSLog(@"%lu",(unsignedlong)set.count);
       //获取集合中的某个对象
       /*
        如果集合中有这个元素就返回,没有就是nil
         */
       NSString *name = [set member:@"京剧"];
       NSLog(@"name = %@",name);
       
       //containsObject: 判断集合中是否会由这个元素
       BOOL ishavejing  = [set containsObject:@"河南梆子"];
       NSLog(@"%d",ishavejing);
       
       BOOL ishaveyue  = [set containsObject:@"余额"];
       NSLog(@"%d",ishaveyue);

       NSMutableArray *haih = [set allObjects];         //返回集合中所有的元素
       for (inti = 0; i < haih.count; i++) {
           NSLog(@"%@",haih[i]);
        }
       //anyObject 返回集合中某一个元素,不保证每次运行出来的结果都是随机的(第一次是随机的,以后都是固定的)
       NSLog(@"--------%@--------",[setanyObject]);
       

       //可变集合
       NSMutableSet *mset = [[NSMutableSetalloc]initWithObjects:@"夏商周",@"春秋",@"唐宋",@"",@"唐宋",@"",nil];
        [msetaddObject:@"晚清"];                   //添加
       for (inti = 0; i < mset.count; i++) {
           NSLog(@"%@",[msetallObjects][i]);
        }
       NSLog(@"----------------------------");
        [msetremoveObject:@""];                 //删除
       for (inti = 0; i < mset.count; i++) {
           NSLog(@"%@",[msetallObjects][i]);
        }
       
       //计数集合
       NSCountedSet *cset = [[NSCountedSetalloc]initWithObjects:@"跳绳",@"丢沙包",@"跳绳",@"踢毽子",@"打羽毛球",@"赛跑",@"打羽毛球",nil];
        NSLog(@"%lu",cset.count);
   NSUInteger count2 = [cset countForObject:@"跳绳"];//计算某个元素在集合中出现的个数(次数)
       NSLog(@"%lu",count2);

0 0
原创粉丝点击