ObjectC----字典类和集合类以及快速枚举和OC中的数组排序

   // Create By 郭仔  2015年04月01日20:06:36



// 不可变字典

    // 字典是适用于存放键值对的一种集合,里面的元素必须是对象类型

    

    // 字典是无序的

    

    // 字典赋值

    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"guozai",@"name",@"nan",@"sex",@"14",@"age" ,nil];

    // 直接打印字典名就可以

    NSLog(@"%@",dic);

    

    // 取出来的键值都用NSString* 指向

    NSString *age = [dic objectForKey:@"age"];

    NSLog(@"%@",age);

    NSString *nam = [dic objectForKey:@"name"];

    NSLog(@"%@",nam);

   // NSString * sex = [dic objectForKey:@"sex"];

    NSLog(@"%@",[dic objectForKey:@"sex"]);

    

    // 获取所有的key

    NSArray * keys = [dic allKeys];

    //直接打印数组名

    NSLog(@"%@",keys);

    

    // 获取所有的value

    NSArray * objects = [dic allValues];

    NSLog(@"%@",objects);

    

    

    

    //=========================================================

    // 可变字典

    

    // 根据已有字典创建新字典

    NSMutableDictionary *mulDic = [NSMutableDictionary dictionaryWithDictionary:dic];

    

    // 添加键值对 score->100

    [mulDic setObject:@"100" forKey:@"score"];

    NSLog(@"%@",mulDic);

    

    // 删除键值对sex->nan

    [mulDic removeObjectForKey:@"sex"];

    NSLog(@"%@",mulDic);

    

    // 修改键值对的值,其实就是添加的方法设置就行

    [mulDic setObject:@"13" forKey:@"age"];

    NSLog(@"%@",mulDic);

    //================================================

    // 遍历字典

    

    NSArray * allkeys = [mulDic allKeys];

    for (int i = 0; i < [allkeys count]; i ++) {

        // 获取下标对应的key

        NSString * key = [allkeys objectAtIndex:i];

        // 根据key获取value

        NSString * value = [mulDic objectForKey:key];

        NSLog(@"%@",value);

    }

    

    // 或则直接用allvalue方法取出所有value

    NSArray * allValue = [mulDic allValues];

    for (int i = 0; i < [mulDic count]; i ++) {

        NSLog(@"%@",[allValue objectAtIndex:i]);

    }

    

    /*

    1字典是适用于存放键值对的一种集合,里面的元素必须是对象类型,

    2字典里面的key时唯一的,不能重复,但是value是可以重复的

    3字典是一种无序集合,键值对顺序不确定,可以将字典理解成下标是字符串的数组

    4字典通过key去值,设置值,修改值.遍历时,可以先便利所有的key,然后根据key值遍历value,或者直接通过allvalue方法遍历所有的值。

     */

    

    

    //==============================================================

    // NSSet 集合

    

    // 使用便利构造器定义set

    NSSet *set = [NSSet setWithObjects:@"guozai",@"zaigguo",@"guoguo", nil];

    // 使用初始化方法定义set

    NSSet *set2 = [[NSSet alloc]initWithObjects:@"guozai",@"zaiguo",@"guoguo", nil];

    

    NSLog(@"%@,%@",set,set2);

    

    // 获取所有元素,并打印

    NSArray * sets = [set allObjects];

    NSLog(@"%@",sets);

    

    for (int i = 0; i < [sets count]; i ++) {

        NSLog(@"%@",[sets objectAtIndex:i]);

    }

    

    // 获取set中任意一个元素

    

    NSString *str = [set anyObject];// anyObject方法并不保证随机,一般都是第一个    元素

    NSLog(@"%@",str);

    

    // 判断集合中是否包含某个元素

    BOOL re = [set containsObject:@"guozai"];

    if (re) {

        NSLog(@"baohan");

    }

    else {

        NSLog(@"bubaohan");

    }

    

    //========================================================

    // NSMutableSet

    

    // 根据已有集合创建新的集合

    NSMutableSet * mulSet = [NSMutableSet setWithSet:set];

    

    // 添加元素

    [mulSet addObject:@"zaizai"];

    NSLog(@"%@",mulSet);

    

    // 删除元素

    [mulSet removeObject:@"zaizai"];

    NSLog(@"%@",mulSet);

    

    // ===================================================

    

    // NSCountedSet NSMutableSet的子类,可用来计算重复次数

    NSCountedSet *countedSet = [NSCountedSet setWithSet:mulSet];

    [countedSet addObject:@"guozai"];

    NSUInteger count = [countedSet countForObject:@"guozai"];

    NSLog(@"%ld",count);

    

    // ===================================================

    // 在使用快速枚举遍历集合中的元素时,不能对集合里面的元素进行增删操作,否则会崩溃

    

    // 数组的快速枚举

    NSMutableArray * arr = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];

    for (NSString *str in arr) {

        NSLog(@"%@",str);

        // 不能增删

    }

    

    // 字典的快速枚举

    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"guozai",@"name",@"man",@"sex",@"19",@"age", nil];

    

    // 字典的快速枚举遍历字典时,遍历的是字典的key

    for (NSString *str in dict) {

       // NSString *value = [dict objectForKey:str];

       // NSLog(@"%@",value);

        NSLog(@"%@",str);// 打印出来的时key

    }

    

    // 集合的快速枚举

    NSMutableSet * mulSet2 = [NSMutableSet setWithObjects:@"1",@"2", nil];

    for (NSString *str in mulSet2) {

        NSLog(@"%@",str);

    }

    

    

    

  // =======================================================

    

    // sortedArrayUsingSelector会创建一个新的数组,不会影响原数组的元素

    // sortUsingSelector不会创建新的数组,而在原数组的基础上调整元素的位置

    

    

    // 比较方法的定义,比如下面compareByPrice方法在类中的定义

- (NSComparisonResult)compareByPrice:(Student1 *)stu

{

    // 返回NSOrderedDescending==1才交换,返回其他两个不交换

    

    if (_price > [stu price]) {

        return NSOrderedAscending;// ==-1

    }

    else if(_price == [stu price])

    {

        return NSOrderedSame;// ==0

    }

    else      {

        return NSOrderedDescending;

    }

    

}


    

    

    NSArray *sortedArray = [students sortedArrayUsingSelector:

                            @selector(compareByPrice:)];//小括号内是方法名

    

    // 在原数组里面排序用sortUsingSelector@selector()方法

    

    for (Student1 * stu in sortedArray) {

        NSLog(@"%@",stu);

    }

    

    

    // 第一步:在model类中定义比较方法

    // 第二步: 给数组发送排序消息

    // 默认是升序

 ================================================================================

   NSLog的description方法的重定义,打印对象时实现自己想要的输出

// 打印对象时,会调用对象的description方法

- (NSString *)description

{

    

    NSString *str = [NSString stringWithFormat:@"name = %@,age = %d,score = %.2f",_name ,_age,_score];

    return str;

}














  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值