NSDictionary NSMutableDictionary NSSet 还有数组中字符串比较排序,数组中国数字从大到小排序

本文详细介绍了Objective-C中字典(NSDictionary和NSMutableDictionary)及集合(NSSet和NSMutableSet)的创建与使用方法,包括不同构造方式、常用操作及其示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 //创建一个字典


//key:能够当key值的一定会遵循NSCopying的协议
    //Value:任意类类型的
    
    
    //1.正常的初始化方法
    NSDictionary *dic1=[[NSDictionary alloc] initWithObjectsAndKeys:@"张三",@"name",@"男",@"sex",@"18",@"age", nil];
   
    NSLog(@"%@",dic1); //哈希排序排放的
    
    //2.使用数组创建
    
    NSArray *keyArray=[NSArray arrayWithObjects:@"name",@"sex",@"age", nil];
    NSArray *valueArray=[NSArray arrayWithObjects:@"张三",@"男",@"18", nil];
    
    
    
    NSDictionary *dic2=[[NSDictionary alloc] initWithObjects:valueArray forKeys:keyArray];
    
    
    NSLog(@"%@",dic2);
    
    //3.使用字典创建字典
    
    NSDictionary *dic3=[NSDictionary dictionaryWithDictionary:dic2];
    NSLog(@"%@",dic3);
    
    

 //常用方法
    //1.取出Key的值
    NSArray *ar1= [dic1 allKeys];
    NSLog(@"%@",ar1);
    //去除Value的值
    NSArray *ar2=[dic1 allValues];
    NSLog(@"%@",ar2);
    
    //根据制定的key值返回相应的Value值
    NSString *s1= [dic3 objectForKey:@"age"];
    NSLog(@"%@",s1);
    
    
    Person *p1=[[Person alloc] initWithName:@"zaizhi" age:18];
    Person *p2=[[Person alloc] initWithName:@"guodong" age:16];
    Person *p3=[[Person alloc] initWithName:@"xiaoxu" age:15];
    
    NSArray *keyar1=[NSArray arrayWithObjects:[p1 name],[p2 name],[p3 name], nil];
    NSArray *valueArray1=[NSArray arrayWithObjects:p1,p2 ,p3, nil];
    
    NSDictionary *dic4=[[NSDictionary alloc] initWithObjects:valueArray1 forKeys:keyar1];
    NSLog(@"%@",dic4);
   NSLog(@"+++++++++%@",p1);

//可变字典

//创建一个空的字典
    NSMutableDictionary *mdic1=[NSMutableDictionary dictionary];
    
    //添加元素
    [mdic1 setObject:@"abc" forKey:@"1"];
    
    NSLog(@"%@",mdic1);
    //删除元素
    [mdic1 removeObjectForKey:@"1"];
    NSLog(@"%@",mdic1);
    
    [mdic1 setObject:@"a" forKey:@"1"];
    [mdic1 setObject:@"b" forKey:@"2"];
    [mdic1 setObject:@"c" forKey:@"3"];
     NSLog(@"%@",mdic1);
    
    //修改:首先去找key值,看有没有key值.
    //如果有,就用新值替换旧值,如果没有新增
    [mdic1 setObject:@"x" forKey:@"1"];
    NSLog(@"%@",mdic1);

//NSSet

//便利构造器
    NSSet *set1=[NSSet setWithObjects:@"1",@"2",@"3",@"3", nil];
    NSLog(@"%@",set1);
    
    //使用方法
    //返回元素个数
    NSInteger r=[set1 count];
    NSLog(@"%ld",r);
    //随机返回一个对象,但是不保证一定是随机的,一般是第一个.
   NSString *r1= [set1 anyObject];
    NSLog(@"%@",r1);
    
    
    NSSet *set2=[NSSet setWithObjects:@"1",@"2",@"3",@"4", nil];
    
    
    //判断两个集是否相等,返回值为 真假.
   BOOL  v= [set1 isEqualToSet:set2];
    NSLog(@"v:%d",v);
    
    //输入一个数,判断传入的对象是否在这个集中,在就返回这个对象,不在返回null,
   NSString *v1= [set1 member:@"3"];
    NSLog(@"%@",v1);
    

//可变的NSMutableSet

 NSMutableSet *mset1=[NSMutableSet set];
    
    [mset1 addObject:@"1"];
    NSLog(@"%@",mset1);
    [mset1 removeObject:@"1"];
    NSLog(@"%@",mset1);
    
    
    [mset1 addObject:@"6"];
    
    [mset1 setSet:set2];
    NSLog(@"%@",mset1);

NSCountedSet 能打印出集合里边重复的东西

举例

NSCountedSet *cSet=[[NSCountedSet alloc] initWithObjects:@"a",@"b",@"c",@"d",@"a", nil];
    NSLog(@"-----%@",cSet);

举例二

 NSArray *arr1=[NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc",@"ddd", nil];
    
    for(NSString *s in arr1){
        NSLog(@"%@",s);
    }
    
    NSDictionary *dic1=[NSDictionary dictionaryWithObjectsAndKeys:@"a",@"1",@"b",@"2",@"c",@"3",nil];
    
  //枚举,快速,便利
    
    for(NSString *s1 in dic1){
        NSLog(@"%@",[dic1 objectForKey:s1]);
    
    
    }

比较数组里边数字从大到小排序

-(NSComparisonResult)sortUseingAge:(Student *)aStudent{
    if ([self age]>[aStudent age]) {
        return NSOrderedDescending;
    }else if ([self age]==[aStudent age]){
        return NSOrderedSame;
    }
    else{
        return NSOrderedAscending;
    }
    
}

比较字符串排序

-(NSComparisonResult)sortUseingName:(Student *)aStudent{
    if ([[self name] compare:[aStudent name]]==NSOrderedDescending) {
        return NSOrderedDescending;
    }else if ([[self name] compare:[aStudent name]]==NSOrderedSame){
        return NSOrderedSame;
    }
    else{
        return NSOrderedAscending;
    }
    

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值