iOS学习之Object-C语言集合遍历和数组排序
// for 循环遍历数组 ; i < array.count; i++) { // 根据数组下标访问数组元素 NSString *str = [array objectAtIndex:i]; NSString *str1 = array[i]; // 两种访问方式 NSLog(@"%@", str1); } // for循环遍历字典 // 获取字典中所有的key值 NSArray *arr = [dict allKeys]; // 遍历keys数组,访问对应的object值 ; i < arr.count; i++) { // 通过下标获取每个key值 id obj = [dict objectForKey:arr[i]]; id obj = dict[arr[i]]; // 两种获取方式 NSLog(@"%@", obj); } // for循环遍历集合 // 取出集合中的元素存放在数组中 NSArray *setArray = [set allObjects]; ; i < setArray.count; i++) { // 两种存放方式 NSLog(@"%@", setArray[i]); NSLog(@"%@", [setArray objectAtIndex:i]); }
// 定义一个数组, 包含5个字符串对象, 倒序取出数组中所有元素, 并存储到另一可变数组中。 NSArray *array3 = [NSArray arrayWithObjects:@"zhangsan", @"lisi", @"wangwu", @"asd", @"wqe", nil]; NSMutableArray *marray = [NSMutableArray array]; NSLog(@"%@", array3); ; i >= ; i--) { // [marray addObject:array3[i]]; marray = [array3 objectAtIndex:i]; NSLog(@"%@", marray); }
// 遍历数组(正序) // 正序的枚举器对象 NSArray *array1 = @[@"aCat", @"aDog", @"aFu", @"aMeng"]; NSEnumerator *arrayEnum = [array1 objectEnumerator]; id value = nil; // 存储数组中的元素对象 // 循环次数未知,所以判断value不为空就打印数据,如果value为空循环停止 while ((value = [arrayEnum nextObject])) { NSLog(@"%@", value); } // 遍历数组(反序) // 倒序的枚举器对象 NSEnumerator *arrayEnum1 = [array1 reverseObjectEnumerator]; id value1 = nil;// 存储数组中的元素对象 while ((value1 = [arrayEnum1 nextObject])) { NSLog(@"%@", value1); } // 遍历字典 // 遍历到的是字典中的object值 // 字典中存放的数据是无序的,没有反向枚举 NSEnumerator *dictionaryEnum = [dict1 objectEnumerator]; id value2 = nil; while ((value2 = [dictionaryEnum nextObject])) { NSLog(@"%@", value2); } // 遍历集合 // 遍历到集合的每一个元素 // 集合中村粗的数据是无序的,没有反向枚举的概念 NSEnumerator *setEnum = [set1 objectEnumerator]; id value3 = nil; while ((value3 = [setEnum nextObject])) { NSLog(@"%@", value3); }
// for...in遍历数组 NSArray *array =@[@"aMeng", @"aSha", @"aBen"]; NSDictionary *dict2 = @{ @"name" : @"aGen", ", @"sex" : @"男", @"hobby": @"nana" }; NSSet *set2 = [NSSet setWithObjects:@"nana", @"zhouyuqi", @"shuaige", @"mengboy", @"王海", @"刘傲然", @"小强", nil]; for (NSString *string in array) { NSLog(@"%@", string); } // for...in遍历字典(得到的是key) for (NSString *key in dict2) { // 通过key访问 // NSLog(@"%@", dict2[key]); NSLog(@"%@",[dict2 objectForKey:key]); } // for...in遍历集合(得到的是集合的元素对象) for (NSString *setString in set2) { NSLog(@"%@", setString); }
// 定义一个数组, 包含5个字符串对象, 取出数组中所有字符串, 并拼接生成一个新的字符串。 NSMutableArray *marrays = [NSMutableArray arrayWithObjects:@"abc", @"def", @"hig", @"klm" ,@"nop", nil]; NSMutableString *strings1 = [NSMutableString string]; for (NSString *value in marrays) { NSLog(@"%@", value); [strings1 appendString:value]; } NSLog(@"%@", strings1);
// 使用 for...in... 完成:定义一个字典, 用于存储一个人的name, sex, age三个数据, for...in...遍历, 输出此人的name到控制台 NSMutableDictionary *dics = [NSMutableDictionary dictionaryWithObjectsAndKeys:", @"age", nil]; for (id value in dics) { if ([value isEqualToString:@"name"]) { NSLog(@"%@", [dics objectForKey:value]); } }
// 1.使用NSSrotDescriptor (排序描述符,相当于排序条件) // 给排序的数组生成排序描述符 // 排序描述符由两个参数组成 // key(键):对于一个给定的集合,对应值的键位将对集合中的每个元素进行排序 // ascending:升序(YES),降序(NO)。 NSSortDescriptor *arraySortDes =[[NSSortDescriptor alloc]initWithKey:@"self" ascending:YES]; // 不可变的数组排序 [array sortedArrayUsingDescriptors:@[arraySortDes]]; for (NSString *obj in array) { NSLog(@"%@", obj); } // 可变数组排序 [mArray sortUsingDescriptors:@[arraySortDes]]; for (NSString *str in mArray) { NSLog(@"%@", str); } // 数组中存放自定义对象进行排序 NSSortDescriptor *arrayByNameSortDes = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; personArray = [personArray sortedArrayUsingDescriptors:@[arrayByNameSortDes]]; for (id obj in personArray) { NSLog(@"%@", obj); } NSSortDescriptor *arrayByNameSortDes = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:NO]; personArray = [personArray sortedArrayUsingDescriptors:@[arrayByNameSortDes]]; for (id obj in personArray) { NSLog(@"%@", obj); } // 将personMarry按照姓名降序排列 NSSortDescriptor *mSortDes = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; [personMarray sortUsingDescriptors:@[mSortDes]]; NSLog(@"%@", personMarray); //2.数组排序,使用数组中两个元素比较的方法名排序 // 不可变数组 SEL sel = @selector(compare:); array = [array sortedArrayUsingSelector:sel]; NSLog(@"%@", array); // 可变的数组 [mArray sortUsingSelector:@selector(compare:)]; NSLog(@"%@", mArray); // 数组元素是自定义类型的对象 // 不可变数组排序 // 方法是自己定义的 // 按照姓名比较 personArray = [personArray sortedArrayUsingSelector:@selector(compareByName:)]; NSLog(@"%@", personArray); personArray = [personArray sortedArrayUsingSelector:@selector(compareByAge:)]; NSLog(@"%@", personArray); [personMarray sortUsingSelector:@selector(compareByName:)]; NSLog(@"%@", personMarray); [personMarray sortUsingSelector:@selector(compareByAge:)]; NSLog(@"%@", personMarray);
iOS学习之Object-C语言集合遍历和数组排序的更多相关文章
- iOS学习16之OC集合遍历和数组排序
1.集合遍历 1> 遍历 集合(Collection):OC中提供的容器类:数组,字典,集合. 遍历:对集合中元素依次取出的过称叫做遍历. 三种方式:① for循环遍历: ② NSEnumera ...
- iOS学习08之C语言内存管理
本次主要学习和理解C语言中的内存管理 1.存储区划分 按照地址从高到低的顺序:栈区,堆区,静态区,常量区,代码区 1> 栈区:局部变量的存储区域 局部变量基本都在函数.循环.分支中定义 栈区的内 ...
- iOS学习07之C语言指针
本次随笔主要是为了学习和理解C语言中的指针,指针树状图如下: 1.访问数据的两种方式 1> 直接访问:定义变量后,直接访问变量 ; printf("a = %d\n", a) ...
- 2018/1/8 学习汇总,kettle简单介绍,集合遍历方式的选择及原理,防止表单重复提交的后台解决方案
昨天因为当前这个二次开发项目的接近尾声,要求我们将生产环境数据库里的数据迁移到现在新的数据库来,但老数据库里是sqlserver而新数据库则是ORACLE,不仅仅面对着数据库数据类型结构不一致的问题, ...
- iOS 学习 - 6.Objective-C中的各种遍历(迭代)方式
说明:转自文顶顶 一.使用 for 循环 要遍历字典.数组或者是集合,for 循环是最简单也用的比较多的方法 -(void)iteratorWithFor { //////////处理数组////// ...
- 【IOS学习】【Swift语言】
基本语法: OS X playground 引入 import Cocoa IOS playground 引入 import UIKit 基本数据类型 let 定义常量 定义完成之后无法修改 var ...
- ios学习之旅---c语言函数
1.函数的概述 C源程序是由函数组成的. 尽管在前面各章的程序中大都仅仅有一个主函数main(),但有用程序往往由多个 函数组成. 函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能. C语 ...
- iOS学习笔记---oc语言第五天
字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key- ...
- IOS各种集合遍历效率对比
前言: 对于ios项目开发中总会遇见各种集合遍历,出于对各种遍历效率的好奇心,所以准备写个测试程序测试一下 首先:先声明一个NSMutableArray,测试数据量分别是1000条,10000条,10 ...
随机推荐
- Ossim主要功能实战
Ossim主要功能实战 OSSIM通过将开源产品进行集成,从而提供一种能够实现安全监控功能的基础平台将Nagiso,Ntop,Snort,Nmap等开源工具集成在一起提供综合的安全保护功能,而不必在各 ...
- [SSH 2] 以网站主页面浅谈Struts2配置
导读:前面总体的介绍了一下SSH框架,那么作为Struts这一支,具体是怎么配置的呢?本篇博客则主要是以自己做过的实例中的登录一条线,简单介绍一下struts2的配置,如有不妥之处,还请大家多提点提点 ...
- ionic cordova file download and load
1.先添加插件 cordova plugin add org.apache.cordova.file cordova plugin add org.apache.cordova.file-transf ...
- angular 页面加载时可以调用 函数处理
转载于 作者:海底苍鹰地址:http://blog.51yip.com/jsjquery/1599.html 我希望页面加载的时候,我能马上处理页面的数据,如请求API .... 所以这样设置 在某个 ...
- rel=nofollow
nofollow是什么意思? nofollow是html标签的一个属性值,Google推荐使用nofollow,告诉机器(爬虫)无需追踪目标页,是指禁止蜘蛛爬行和传递权重,但是如果你是通过sitema ...
- angular directive指令相互独立
想要让指令的使用相互间不干扰,如下:
- WeChat 6.3 wipe deleted chat messages as well as LINE 5.3 and above
Let me show you the WeChat version first. It is 6.3. What will happen to WeChat deleted chat message ...
- SQL更新表的字段
Oracle: alter table CAPIAGENTLOG modify(clientcode nvarchar2()) SQL Server: alter table CAPIAGENTLOG ...
- Android IOS WebRTC 音视频开发总结(二一)-- 黑屏问题
本文主要介绍音视频通话中收到第一帧图像后视频一直卡住的问题,文章来自博客园RTC.Blacker,转载请说明出处. 因为苹果AppStore要求从2015年2月1日开始所有所有上架App必须支持arm ...
- 【EF学习笔记04】----------EF简单增删改查
第一步:创建上下文对象 using(var db = new Entities()) { //数据操作 } 新增 UserInfo user = new UserInfo() { UserName = ...