• Foundation ----->NSArray


    1.数组的创建
    
        //注意:在OC的数组中,只能够存放对象
    //    NSArray *array = [NSArray arrayWithObject:12];错误
        
        //创建字符串
        NSString *str1 = @"zhangsan";
        NSString *str2 = @"lisi";
        NSString *str3 = @"wangwu";
        
        //创建数组,并且设置多个元素
        //注意:是以nil结尾的
        NSArray *array1 = [[NSArray alloc] initWithObjects:str1,str2,str3, nil];
        NSLog(@"array1:%@",array1.description);
        
        //使用对应的类方法
        NSArray *array2 = [NSArray arrayWithObjects:str1,str2,str3, nil];
        NSLog(@"array2:%@",array2);
        
        //创建数组的同时初始化一个元素
        NSArray *array3 = [[NSArray alloc] initWithObjects:str1, nil];
        NSArray *array4 = [NSArray arrayWithObject:str1];
        NSLog(@"array3:%@ 
      array4:%@",array3,array4);
        
        //创建数组的同时使用一个已有的数组初始化
        NSArray *array5 = [[NSArray alloc] initWithArray:array2];
        NSArray *array6 = [NSArray arrayWithArray:array2];
        NSLog(@"array5:%@ 
      array6:%@",array5,array6);
        
        2.获取数组的相应元素
        
        //-----------根据下标取元素---------
        NSString *str = [array5 objectAtIndex:2];
        
        3.获取数组元素个数
    
        NSUInteger count = array5.count; //[array5 count];
        NSLog(@"count:%ld",count);
          
        4.判断某一个元素是否在一个数组中
    
        BOOL isContain = [array5 containsObject:@"zhaoliu"];
        if (!isContain) {
            NSLog(@"不包含zhaoliu");
        }
        
        5.根据某一个元素获取下标
        //如果有这个元素,则返回相应的下标,没有则返回NSNotFound
        NSInteger index = [array5 indexOfObject:@"zhaofei"];
        if (index == NSNotFound) {
            NSLog(@"没有响应的元素");
        }
        
        6.注意两个数组的区别
    
        //将array5中的所有元素交给array8
        NSArray *array8 = [NSArray arrayWithArray:array5];
        
        NSArray *array9 = [NSArray arrayWithObject:array5];
        NSLog(@"array9:%@",array9);
    
        7.获取数组中最前面/最后面的一个元素
    
        NSString *firstStr = [array8 firstObject];
        NSString *lastStr = [array8 lastObject];
        NSLog(@"firstStr:%@  lastStr:%@",firstStr,lastStr);
        
        8.截取数组
        NSArray *array10 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
        //截取出@"2",@"3",@"4"
        NSRange rg = {1,3};
        NSArray *subArray = [array10 subarrayWithRange:rg];
        NSLog(@"subArray:%@",subArray);
        
            9.追加数组
        //追加一个元素
    //    [array10 arrayByAddingObject:<#(nonnull id)#>]
        //在array10后面追加元素
        NSArray *addArray = [array10 arrayByAddingObjectsFromArray:array1];
        NSLog(@"%@",addArray);
    
        10.数组比较
        if ([array1 isEqualToArray:array2]) {
            NSLog(@"array1和array2相同");
        }
        
        11.判断两个数组的开头是否相同
    
        // 1,2,4,5    3,2,1,6
        NSArray *a = @[@"1",@"2",@"4",@"5"];
        NSArray *a2 = @[@"30",@"20",@"10",@"60"];
        NSString *sameS = [a firstObjectCommonWithArray:a2];
        NSLog(@"%@",sameS);
        if (![array1 firstObjectCommonWithArray:array10]) {
            NSLog(@"第一个元素不相同");
        }
        
        12.数组遍历
    
        //方式一:
        //遍历addArray
        //获取addArray数组的长度
        NSUInteger count2 = addArray.count;
        for (int i=0; i<count2; i++) { //注意数组越界
            //i:0....
            //根据下标获取元素
    //        NSString *obj = [addArray objectAtIndex:i];
            //等价
            NSString *obj = addArray[i];
            NSLog(@"obj:%@",obj);
        }
        
        //方式二:快速遍历
        for (NSString *str in addArray) {
            NSLog(@"str:%@",str);
        }
        
        
        //------------数组新语法------------
    //    int a[] = {1,2,3,4}
    //    a[2]
        //创建并且初始化数组
        NSArray *array11 = @[@"1",@"2",@"3",@"4",@"5"];
        NSLog(@"%@",array11);
        
        //根据制定下标获取元素
        NSString *s = array11[3];
        NSLog(@"s:%@",s);
        
    二:可变数组(NSMutableArray)
        
        NSString *s1 = @"zhaoliu";
        NSString *s2 = @"tianqi";
        NSString *s3 = @"suba";
        
        1.创建可变数组
        //不可以这么写
    //    NSMutableArray *mutArray = @[s1,s2,s3];
        
        //创建一个容量为5的数组,可以存放超过5个元素,空间会自动增加
        NSMutableArray *mutArray1 = [NSMutableArray arrayWithCapacity:5];
        //注意:此时没有元素,0
        NSUInteger mutCount = mutArray1.count;
        NSLog(@"mutCount:%ld",mutCount);
        
        NSMutableArray *mutArray2 = [[NSMutableArray alloc] initWithObjects:s1,s2,s3, nil];
        
        1.添加元素
    //    [mutArray2 addObject:str1];
    //    [mutArray2 addObject:str2];
    //    [mutArray2 addObject:str3];
        
        //2.将一个数组中的元素添加到可辨数组中
        [mutArray2 addObjectsFromArray:array1];
        
        //3.将一个数组作为一个元素添加到数组中
        [mutArray2 addObject:array1];
        
        2.插入元素
    
        [mutArray2 insertObject:@"1" atIndex:0];
    
        3.替换元素
        [mutArray2 replaceObjectAtIndex:1 withObject:@"bingge"];
    
        
        //可以替换多个
    //    [mutArray2 replaceObjectsInRange:<#(NSRange)#> withObjectsFromArray:<#(nonnull NSArray *)#>]
        
        4.交换
        [mutArray2 exchangeObjectAtIndex:0 withObjectAtIndex:1];
        
        
        5.删除
        
        //删除所有元素
    //    [mutArray2 removeAllObjects];
        
        //删除最后一个元素
    //    [mutArray2 removeLastObject];
        
        //删除指定元素
    //    [mutArray2 removeObject:@"bingge"];
        
    //    /删除指定下标元素
    //    [mutArray2 removeObjectAtIndex:1];
        
        //删除多个元素
        NSRange rg1 = {0,7};
        NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:rg1];
        
        [mutArray2 removeObjectsAtIndexes:indexSet];
        
        NSLog(@"mutArray2:%@",mutArray2);
        
        
        6.数组元素排序
    
        NSArray *array = @[@"agfd",
                           @"abc",
                           @"adf",
                           @"aaa",
                           @"csw",
                           @"swa"];
        
        NSArray *newArray = [array sortedArrayUsingSelector:@selector(compare:)];
        NSLog(@"newArray:%@",newArray);
        
  • 相关阅读:
    浅谈C++ STL中的优先队列(priority_queue)
    哈夫曼树与哈夫曼编码
    Binary Search 的递归与迭代实现及STL中的搜索相关内容
    Prime 算法的简述
    估算网站需要多少宽带方法
    微服务服务拆分步骤
    第一次有人把科创板讲得这么简单明了
    一个人优秀到可怕的三个迹象!一旦具备,必为人中龙凤,大富大贵
    美元加息怎么“剪羊毛”
    英国脱欧的影响
  • 原文地址:https://www.cnblogs.com/wangyibo-666/p/5122478.html
Copyright © 2020-2023  润新知