iOS数组遍历
对于一个数组
NSArray *array = @[@"111",@"222",@"333",@"444",@"555",@"666",@"777",@"888",@"999",];
NSInteger count =array.count;
1.for循环
for (NSInteger i=0; i<count; i++) {
NSLog(@"%@----%@",array[i],[NSThread currentThread]);
}
2.for in快速枚举
for (NSString *string in array) {
NSLog(@"%@----%@",string,[NSThread currentThread]);
}
集合中对象数很多的情况下,for in 的遍历速度非常之快。但小规模的遍历 还没for循环快。
3. 枚举器NSEnumerator
// 向数组请求枚举器
NSEnumerator *enumer = [array objectEnumerator]; // 正序
NSEnumerator *enumer2 = [array reverseObjectEnumerator]; // 倒序
id obj;
while ( obj = [enumer nextObject]) {
// nextObject为nil,结束循环
// 不可对array的元素进行增 删
NSLog(@"%@----%@",obj,[NSThread currentThread]);
}
4. enumerateObjectsUsingBlock方法
// 顺序遍历
[array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@----%@",array[idx],[NSThread currentThread]);
if (idx == 5) {
*stop = YES; // 停止遍历
}
}];
// 倒序遍历
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@----%@",array[idx],[NSThread currentThread]);
if (idx == 5) {
*stop = YES; // 停止遍历
}
}];
Block内代码可以并发执行。
字典情况下
NSDictionary * dic = [NSDictionary dictionary];
[dic enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
NSLog(@"value for key %@ is %@ ", key, value);
if ([@"key2" isEqualToString:key]) {
*stop = YES;
}
}];
遍历字典类型时,推荐使用。字典遍历可以同时取allkeys和allvalues中的元素。
5.多线程dispatch_apply
// 并行队列
dispatch_queue_t queue = dispatch_queue_create("zzz", DISPATCH_QUEUE_CONCURRENT);
dispatch_apply(count, queue, ^(size_t index) {
NSLog(@"%@----%@",array[index],[NSThread currentThread]);
});
适用于 处理每一次循环都有耗时任务的数组遍历。
6.NSSet
NSArray *arr1 = ....;
NSArray *arr2 =....;
NSSet *aaaSet = [NSSet setWithArray:arr2];
for (NSUInteger i = 0; i < arr1.count; ++i) {
UIView *targetView = arr1[i];
if ([aaaSet containsObject:targetView]) {
//....
}
}
iOS数组遍历的更多相关文章
- iOS中数组遍历的方法及比较
数组遍历是编码中很常见的一种需求,我们来扒一拔iOS里面都有什么样的方法来实现,有什么特点. 因为ios是兼容C语言的,所以c语言里面的最最常见的for循环遍历是没有问题的. 本文中用的数组是获取的系 ...
- iOS中数组遍历的方法及比較
数组遍历是编码中非经常见的一种需求.我们来扒一拔iOS里面都有什么样的方法来实现,有什么特点. 由于iOS是兼容C语言的.所以C语言里面的最最常见的for循环遍历是没有问题的. 本文中用的数组是获取的 ...
- [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}
IOS数组.字典.NSNumber 新写法—— @[].@{} //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...
- 转→js数组遍历 千万不要使用for...in...
看到一篇内容还不错,但是排版实在糟糕, 逼死强迫症患者啊,直接拉下去找原文连接,找到了,但是已经消失了···500错误... 第一次因为实在看不下去一篇博客的排版, 为了排版而转载... 转载地址:h ...
- (转)深入理解PHP之数组(遍历顺序)
深入理解PHP之数组(遍历顺序)(转) http://www.laruence.com/2009/08/23/1065.html (鸟哥) 经常会有人问我, PHP的数组, 如果用foreach来访问 ...
- JS几种数组遍历方式以及性能分析对比
前言 这一篇与上一篇 JS几种变量交换方式以及性能分析对比 属于同一个系列,本文继续分析JS中几种常用的数组遍历方式以及各自的性能对比 起由 在上一次分析了JS几种常用变量交换方式以及各自性能后,觉得 ...
- iOS数组使用
相关链接: ios数组基本用法和排序 NSArray 排序汇总 iOS 数组排序方法 IOS-筛选数组内的元素 关于EnumerateObjectsUsingBlock和for-in之间的较量 [iO ...
- C# for和 foreach 的数组遍历 比较
刚学习程序,感觉写代码 很有意思,所以把自己的感悟写下来啦,第一次写博客,可能是菜鸟中的菜鸟 时间久了,相信就会写的很好哦! for和 foreach 的数组遍历 比较 很简单的程序,不解释啦! u ...
- JS之对象数组遍历?
一.js实现遍历对象 <script> ","destroy":"97%"}; var props = ""; for ...
随机推荐
- linux 命令 文件数量统计
# 查看当前目录下的文件数量(不包含子目录中的文件) ls -l|grep "^-"| wc -l # 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表子目录 ls ...
- mysql union all limit的使用
To apply ORDER BY or LIMIT to an individual SELECT, place the clause inside the parentheses that enc ...
- 使用spring validation完成数据后端校验-自定义校验的注解-判断是否为空
引入依赖 我们使用maven构建springboot应用来进行demo演示. <dependencies> <dependency> <groupId>org.sp ...
- Shell流程控制语句while
while语法格式: while 判断条件 do 命令 done while语句流程控制图: 实例: [root@youxi1 ~]# vim a.sh #!/bin/bash i=0 while [ ...
- python调用kafka服务(使用kafka-python库)
试验环境: CDH 5.15.1 CentOS 7 Python 3.7.0 kafka 1.1.1 kafka-python :https://pypi.org/project/kafka-pyth ...
- 如何使APP开机自启动
方案一 将app做成系统应用,直接安装在 system/app 目录下 具体步骤为: 1.在AndroidManifest文件中,添加 android:sharedUserId="andro ...
- [LeetCode] 505. The Maze II 迷宫 II
There is a ball in a maze with empty spaces and walls. The ball can go through empty spaces by rolli ...
- python的进修之路
PYTHON目录篇 本篇主要在个人学习python中的一些总结性的总线,包括python的基础,python的基础进阶,除了帮助和我一样学习python的同学,也是对自己的一种要求! python基础 ...
- 探索免费开源服务器tomcat的魅力
Tomcat最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发的.后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会,并且成为Jakarta 项目中的一个核心项目.因此逐渐成为世界上广 ...
- Mysql 学习整理
1 创建数据库 1.1数据库基本结构 数据库:数据库是表的集合,带有相关的数据. 表:一个表是多个字段的集合. 字段:一个字段是一列数据,由字段名和记录组成 1.2创建数据库 create datab ...