黑马程序员-foundation框架-NSArray 基本介绍

本文详细介绍了Objective-C中NSArray和NSMutableArray的使用方法,包括数组的创建、常用操作及遍历技巧。对比了这两种数组类型的特性,并提供了实用的代码示例。

------- android培训java培训、期待与您交流! ----------

1,NSArray是OC中的数组类。

c语言数组弊端

1)只能存放一种数据类型

2)不能很方便的动态添加数组元素,不能很方便的动态删除数组元素

NSArray的使用注意

1)只能存放任意OC对象,并且是有顺序的

2)不能存储非OC对象,比如int,float等

3)长度不可变,一旦初始化完毕,它里面的内容是永远固定,不能删除也不能添加

NSArray的类创建方式(都是以array开头)

+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;

+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray *)array;
+ (id)arrayWithContentsOfFile:(NSString *)path; //
读取一个xml文件.+ (id)arrayWithContentsOfURL:(NSURL *)url; // 读取一个xml文件


数组使用注意:
NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式。

NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0。0也是基本数据类型,不能存放到NSArray中。 

NSArray *array = [NSArray array]; //这样的数组永远是空的,不可能向其中增加值。(不可变性) 


NSArray的常见用法

- (NSUInteger)count;获取集合元素个数

- (id)objectAtIndex:(NSUInteger)index;获得index位置的元素

-(BOOL)containsObject:(id)anObject;是否包含某一元素

- (id)lastObject;返回最后一个元素

- (id)firstObject;返回最后一个元素

- (NSUInteger)indexOfObject:(id)anObject;查找anObject元素在数组中的位置(如果找不到,返回-1)NSNotFound

- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;在range范围内查找anObject元素在数组中的位置 


数组的简写

自从2012年开始, Xcode的编译器多了很多自动生成代码的功能,使得OC代码更加精简数组的创建
之前
[NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];

现在

@[@"Jack", @"Rose", @"Jim"];数组元素的访问
之前
[array objectAtIndex:0];现在

array[0]; 

NSArray遍历

1)下标遍历

2)for循环的增强形式遍历

3)使用block遍历

        //数组
        NSArray *arr =[[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4", nil];
        NSLog(@"%@",arr);
        NSArray *a2 =[[NSArray alloc] initWithArray:arr];
        for(int i=0;i<arr.count;i++){
            NSLog(@"%@",arr[i]);
        }
        
        for(NSString *str in a2){
            NSLog(@"%@",str);
        }
        
        [arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
            NSLog(@"第 %ld 值 %@",idx,obj);
            if([obj integerValue]==3){
                *stop = YES;
            }
        }];

NSMutableArray

NSMutableArray *array = [NSMutableArray array]; 

//创建空数组
NSMutableArray *arr = [NSMutableArray array];//创建数组,并且指定长度为5,此时也是空数组
NSMutableArray *arr2 = [[NSMutableArray alloc] initWithCapacity:5];//创建一个数组,包含两个元素
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"2", nil];//调用对象方法创建数组
NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",@"2", nil]; 

- (void)addObject:(id)object;添加一个元素

- (void)addObjectsFromArdObray:(NSArray *)array;添加otherArray的全部元素到当前数组中

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;index位置插入一个元素

- (void)removeLastObject;删除最后一个元素

- (void)removeAllObjects;删除所有的元素

- (void)removeObjectAtIndex:(NSUInteger)index;删除index位置的元素

- (void)removeObject:(id)object;删除特定的元素

- (void)removeObjectsInRange:(NSRange)range;删除range范围内的所有元素

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;anObject替换index位置对应的元素,简写:arr[0]=@"1";


- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;交换idx1idx2位置的元素

-------  android培训 java培训 、期待与您交流! ----------

基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合数据驱动方法与Koopman算子理论的递归神经网络(RNN)模型线性化方法,旨在提升纳米定位系统的预测控制精度与动态响应能力。研究通过构建数据驱动的线性化模型,克服了传统非线性系统建模复杂、计算开销大的问题,并在Matlab平台上实现了完整的算法仿真与验证,展示了该方法在高精度定位控制中的有效性与实用性。; 适合人群:具备一定自动化、控制理论或机器学习背景的科研人员与工程技术人员,尤其是从事精密定位、智能控制、非线性系统建模与预测控制相关领域的研究生与研究人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能预测控制;②为复杂非线性系统的数据驱动建模与线性化提供新思路;③结合深度学习与经典控制理论,推动智能控制算法的实际落地。; 阅读建议:建议读者结合Matlab代码实现部分,深入理解Koopman算子与RNN结合的建模范式,重点关注数据预处理、模型训练与控制系统集成等关键环节,并可通过替换实际系统数据进行迁移验证,以掌握该方法的核心思想与工程应用技巧。
基于粒子群算法优化Kmeans聚类的居民用电行为分析研究(Matlb代码实现)内容概要:本文围绕基于粒子群算法(PSO)优化Kmeans聚类的居民用电行为分析展开研究,提出了一种结合智能优化算法与传统聚类方法的技术路径。通过使用粒子群算法优化Kmeans聚类的初始聚类中心,有效克服了传统Kmeans算法易陷入局部最优、对初始值敏感的问题,提升了聚类的稳定性和准确性。研究利用Matlab实现了该算法,并应用于居民用电数据的行为模式识别与分类,有助于精细化电力需求管理、用户画像构建及个性化用电服务设计。文档还提及相关应用场景如负荷预测、电力系统优化等,并提供了配套代码资源。; 适合人群:具备一定Matlab编程基础,从事电力系统、智能优化算法、数据分析等相关领域的研究人员或工程技术人员,尤其适合研究生及科研人员。; 使用场景及目标:①用于居民用电行为的高效聚类分析,挖掘典型用电模式;②提升Kmeans聚类算法的性能,避免局部最优问题;③为电力公司开展需求响应、负荷预测和用户分群管理提供技术支持;④作为智能优化算法与机器学习结合应用的教学与科研案例。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,深入理解PSO优化Kmeans的核心机制,关注参数设置对聚类效果的影响,并尝试将其应用于其他相似的数据聚类问题中,以加深理解和拓展应用能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值