计算数字数组中元素的最值 & KVC用法延伸
2016-08-10 15:53
507 查看
计算数字数组中元素的最值 & KVC用法延伸
原贴地址:http://stackoverflow.com/questions/15931112/finding-the-smallest-and-biggest-value-in-nsarray-of-nsnumbers方法一:排序
NSArray *sorted1 = [numbers sortedArrayUsingSelector:@selector(compare:)];
方法二:KVC - doubleValue
NSNumber *max=[numbers valueForKeyPath:@"@max.doubleValue"]; NSNumber *min=[numbers valueForKeyPath:@"@min.doubleValue"];
方法三:KVC - self
NSNumber *max=[numbers valueForKeyPath:@"@max.self"]; NSNumber *min=[numbers valueForKeyPath:@"@min.self"];
方法四:循环
float xmax = -MAXFLOAT; float xmin = MAXFLOAT; for (NSNumber *num in numbers) { float x = num.floatValue; if (x < xmin) xmin = x; if (x > xmax) xmax = x; }
方法五:block遍历
__block float xmax = -MAXFLOAT; __block float xmin = MAXFLOAT; [numbers enumerateObjectsUsingBlock:^(NSNumber *num, NSUInteger idx, BOOL *stop) { float x = num.floatValue; if (x < xmin) xmin = x; if (x > xmax) xmax = x; }];
※ 各种方法性能测试
demo.mKVC使用补充
求和
NSNumber *sum = [numbers valueForKeyPath:@"@sum.floatValue"];
求平均值
NSNumber *sum = [numbers valueForKeyPath:@"@avg.floatValue"];
删除重复数据
NSArray *newArray = [numbers valueForKeyPath:@"@distinctUnionOfObjects.self"];
调用实例方法
NSArray *array = @[@"id", @"sex", @"age", @"homeTown"]; // 字符串变大写 NSArray *list1 = [array valueForKeyPath:@"uppercaseString"]; // 字符串变小写 NSArray *list2 = [array valueForKeyPath:@"lowercaseString"]; // 字符串首字母变大写,其它变小写 NSArray *list3 = [array valueForKeyPath:@"capitalizedString"]; …… // 其它实例方法以此类推,皆可调用!
相关文章推荐
- 笔试算法题(29):判断元素范围1到N的数组是否有重复数字 & 计算整数的7倍
- 函数功能:传入一个数组,返回数组中第二大数。已知数组中的对象都是数字构成的字符串,且任意两元素不相等。 如传入:@[@"1",@"2",@"3",@"4"],返回@"3"
- 算法竞赛 4-6 用函数交换变量 & 4-8计算数组的元素和 &4-9计算左闭右开区间内的元素和
- 寻找数组中的第K大的元素&找数组中重复数字
- sizeof 用法 取得数组的元素个数
- 单元素数组的技巧性用法
- 二分查找binsearch: 在v[0]&lt;=v[1]&lt;=v[2]&lt;=......&lt;=v[n-1]中查找x,数组v的元素必须以升序排列
- 将一个数组内元素的顺序打乱&随即生成数组
- 把string id="5,6,8,9"分成数组{}5,6,8,9},并计算维数
- 黑马程序员之C#编程基础学习笔记:计算一个整数数组的所有元素的和。
- 巩固:数组作为函数参数& 指针作为函数参数的用法
- 计算一个数组所有元素之和(方法总结)
- 13.计算一个整数数组的所有元素的和。
- 计算数组中相同元素的个数,以及数组总的元素数(重复元素算一个)
- Android中ArrayList<E>动态数组用法
- 有一个数组,存储的元素为1到10000000的任意数,在其中查找出一个重复的数字
- 倒置数组中的元素.由0—>9倒为9—>0
- 计算一个数组所有元素之和(无锁方法)
- 所谓"在表达式中,数组名总是被转换为指向该数组第一个元素的指针"应该如何理解?
- perl 计算多维数组的行数,以及每行的元素数