字典、集合、数组排序

// 字典、集合、数组排序

 //字典用来保存具有映射关系(key-value对)数据的集合,一个key-value对被认为是一个条目(Entry),字典是存储key-value对的容器,与数组不同,字典靠key存取元素,Key不能重复,value必须是对象,键值对在字典中是无序排列的,字典分为可变字典(NSMutableDictionary)和不可变字典(NSDictionary).

//与数组中的集合一样,集合中的元素是唯一的。存储的元素是无序的,存储元素必须是对象,分为NSSet和NSMutableSet,NSCountedSet是NSMutabSet的子类,能记录元素重复的次数。

 

 

//  main.m

 

#import<Foundation/Foundation.h>

 

int main(intargc, const char * argv[]) {

   @autoreleasepool {

//       //字典: key唯一!无需,是一个容器

//       //不可变数组:长度及内容不可变

//       // 1、创建字典对象:初始化,便利构造器

//       NSDictionary *dic =[[NSDictionaryalloc]initWithObjectsAndKeys:@"zs",@"name",@"lx",@"names",nil];

//       NSDictionary *dic1 =[NSDictionarydictionaryWithObjectsAndKeys:@"zs",@"name",@"lx",@"names",nil];

//       

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

//       // 2、获取键值对个数

//       NSInteger count = [dic count];

//       NSLog(@"%li",count);

//       

//       // 3、获取所有key 获取所有Value

//       NSArray *arr = [dicallKeys];

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

//       NSArray *ar = [dicallValues];

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

//      

//       // 4、通过key值查询value

//       NSString *value  = [dic1objectForKey:@"name"];

//       NSString *value1 = [dic1 valueForKey:@"name"];

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

//       

//       // 可变字典:不可变字典的子类,增加了增删改等方法

//       

//       // 1、创建字典对象。

//       NSMutableDictionary *mdic =[NSMutableDictionarydictionaryWithObjectsAndKeys:@"zs",@"name",@"lx",@"names",nil];

       添加键值对。

//       [mdicsetObject:@"ylc"forKey:@"namez"];

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

       修改key对应的value

//       // 结论:key值相同,则为修改;key值不同,则为添加。

//       [mdicsetValue:@"it" forKey:@"namez"];

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

//       

    删除键值对。

//       [mdicremoveObjectForKey:@"namez"];

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

//

//      // 通过for循环遍历所有键值对

//       for (inti = 0; i< [mdic count]; i++) {

//            NSArray *arr = [mdicallKeys];

//           NSLog(@"%@",[mdicobjectForKey:[arrobjectAtIndex:i]]);

//

//        }

 

          // 集合: 无序,元素不可重复,元素必须是对象类型。

          // NSSet

 

//       //创建集合对象。

//       NSSet *set =[NSSetsetWithObjects:@"1",@"2",@"3", nil];

//       NSSet *set1 =[[NSSetalloc]initWithObjects:@"4",@"5",@"6",nil];

//       //获取元素个数。

//        NSLog(@"%li",[set count]);

//       //获取集合中的某个元素。

//       NSSet *set2 = [set1 anyObject];

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

//       //判断集合中是否包含某个对象。

//       if ([set containsObject:@"4"]) {

//            NSLog(@"包含对象");

//       }

//       

//       NSArray *arr =[NSArrayarrayWithObjects:@"1",@"1",@"2",nil];

//       NSSet *set12 = [[NSSetalloc] initWithArray:arr];

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

//       

//       

//       //NSMutableSet是NSSet子类,增加了增、删方法

//     // 1、

//       NSMutableSet *mSet =[[NSMutableSetalloc]initWithObjects:@"12",@"13", nil];

//       NSMutableSet *mSet1 = [NSMutableSet set];

//    //   2、添加元素

//       [mSetaddObject:@""];

//       

//    //   3、删除元素.

//       [mSetremoveObject:@"13"];

//       [mSetremoveAllObjects];

//       

//        // NSCountedSet: NSMutableSet的子类

//       //   一般用来记录重复元素的个数

//       NSCountedSet *countSet =[[NSCountedSetalloc]initWithObjects:@"11",@"11",@"11",@"1",@"2",nil];

//       // 记录某个元素在集合中出现的次数

//       NSInteger count = [countSetcountForObject:@"11"];

//       NSLog(@"%li",count);

 

       // 快速枚举

NSArray *a =[NSArrayarrayWithObjects:@"64",@"55", nil];

NSDictionary *dic =[NSDictionarydictionaryWithObjectsAndKeys:@"fd",@"name",@"as",@"names",nil];

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

NSSet *set =[NSSetsetWithObjects:@"5",@"6",@"7",@"8",nil];

 

       //  第一个参数是容器类(集合)类的元素

       //  第二个参数是容器

       // 如果容器类的元素类型不一致,可以用id表示

NSMutableArray *arr1 = [NSMutableArrayarray];

       // for in 遍历字典,遍历出来的是key值

for ( id d in [dicallValues]) {

NSLog(@"%@ ",d);

       }

for (id ar in arr) {

if( [arisEqualToString:@"2"]){

 

           }

NSLog(@"%@",ar);

       }

for (id s in set) {

NSLog(@"%@",s);

       }

 

 

       // 数组排序

 

       // 可变数组排序

NSMutableArray *arc =[NSMutableArrayarrayWithObjects:@"123",@"789",@"4444",@"27",nil];

        // 可变数组本身可以改变,因此排序之后不需要返回值

       //compare默认升序排序

       // @selector是一个方法选择器,后面跟方法名

 

//       //可变数组

//       [arcsortUsingSelector:@selector(compare:)];

//        //快速枚举

//       for (NSString *s in arc) {

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

//       }

//       // 不可变数组

//       NSArray *b = [a sortedArrayUsingSelector:@selector(compare:)];

//       for (NSString *s in b) {

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

//       }

//       

 

       // 排序

       [arcsortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

if ([obj1 compare:obj2] > 0) {

returnNSOrderedDescending;      // == 1

}else if ([obj1 compare:obj2] < 0){

returnNSOrderedAscending;       // == -1

}else{

returnNSOrderedSame;       // == 0

           }

       }];

for (NSString *s in arc) {

NSLog(@"%@",s);

       }

    }

return 0;

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值