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 ...
随机推荐
- Windbg 进程与线程 《第三篇》
Windbg既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息.调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺. 一.进程命令 进程命令包括这些内容:显示进程列表.进 ...
- tcpdump抓包
名称(NAME)tcpdump-转储网络上的数据流总览(SYNOPSIS)tcpdump[-adeflnNOpqStvx][-ccount][-Ffile] [-iinterface][-rfile] ...
- frame和iframe的区别
转自:http://blog.csdn.net/lyr1985/article/details/6067026 CSDN 1.frame不能脱离frameSet单独使用,iframe可以 ...
- 一款简单射击游戏IOS源码
源码描述: 一款基于cocos2d的简单设计游戏,并且也是一款基于cocos2d的简单射击游戏(含苹果IAD广告), 游戏操作很简单,哪个数字大就点击射击哪个.里面有苹果iad广告,功能简单完整,适合 ...
- s3c6410_时钟初始化
参考: 1)<USER'S MANUAL-S3C6410X>第三章 SYSTEM CONTROLLER 2)u-boot/board/samsumg/smdk6410/lowlevel_i ...
- C#局域网桌面共享软件制作(一)
很久没有写文章了,今天分享的内容是局域网桌面共享软件,相信很多人都做过,也可能遇到一些问题,这里我将一一测试. 涉及到的内容有:局域网文件传输.桌面截屏.图片压缩等.为了更直白的演示程序的功能所以没有 ...
- shell 截取指定的字符串
按指定的字符串截取 1.第一种方法: ${varible##*string} 从左向右截取最后一个string后的字符串 ${varible#*string}从左向右截取第一个string后的字符串 ...
- linux下proc目录详解
proc/pid记录了什么cd /proc/之后,你会发现很多的目录和文件,今天首先来介绍的就是那些以数字命名的目录--它们就是linux中的进程号,每当你创建一个进程时,里面就会动态更新多出一个名称 ...
- CentOS下修复grub引导程序
1.早上装系统,试了好几次.最终grub修复成功! 解决方法大致如下: 开机遇见 grub>的时候 下面看解决方法 首先是既然插上U盘能进系统 那我们插上U盘 正常进入系统 然后看操作 [r ...
- jquery easyui combobox
$("#select_Dic").combobox({ url: "http://www.cnblogs.com/Ajax/ ...