直接上代码 输出结果也在相应的代码里标注出来了

 //main.m文件
#import <Foundation/Foundation.h>
#import "Student.h" int main(int argc, const char * argv[]) {
@autoreleasepool { NSMutableArray <Student *> *_studentArrM;
NSMutableArray <Student *> *_studentArrMTest; _studentArrM = [NSMutableArray array];
_studentArrMTest = [NSMutableArray array]; Student *s1 = [Student studentWithNum: chinese:90.0 math:96.0 english:100.0];
Student *s2 = [Student studentWithNum: chinese:90.0 math:100.0 english:96.0];
Student *s3 = [Student studentWithNum: chinese:100.0 math:90.0 english:96.0]; [_studentArrM addObject:s1];
[_studentArrM addObject:s2];
[_studentArrM addObject:s3]; double mathAvg = [[_studentArrM valueForKeyPath:@"@avg.math"]doubleValue];
double mathMax = [[_studentArrM valueForKeyPath:@"@max.math"]doubleValue];
double mathMin = [[_studentArrM valueForKeyPath:@"@min.math"]doubleValue];
double mathSum = [[_studentArrM valueForKeyPath:@"@sum.math"]doubleValue];
NSLog(@"数学平均分%f 数学最高分%f 数学最低分%f 所有人的数学总分%f",mathAvg,mathMax,mathMin,mathSum); /*
输出的内容为:数学平均分95.333333 数学最高分100.000000 数学最低分90.000000 所有人的数学总分286.000000 提示:有兴趣的话可以自己多测试几组数据
*/ //接下来试着处理一下数组中的对象的是否有重复的问题
//测试需要我们可以再次给可变数组添加一个重复的对象
[_studentArrM addObject:s2];
[_studentArrM addObject:s2]; NSArray *arrDistinct = [_studentArrM valueForKeyPath:@"@distinctUnionOfObjects.num"];
NSArray *arrUnion = [_studentArrM valueForKeyPath:@"@unionOfObjects.num"]; NSLog(@"DistinctArray %@ \n UnionArray %@",arrDistinct,arrUnion);
/*
输出的内容为:
DistinctArray (
3,
2,
1
)//提示:没有重复的所有值
UnionArray (
1,
2,
3,
2,
2
)//提示:有重复的所有值
*/ //为了处理 多个数组 中的重复值的情况再次添加一个一个对象到测试数组
[_studentArrMTest addObject:s2]; NSLog(@"%@",[@[_studentArrM,_studentArrMTest] valueForKeyPath:@"@distinctUnionOfArrays.num"]);
NSLog(@"%@",[@[_studentArrM,_studentArrMTest] valueForKeyPath:@"@unionOfArrays.num"]);
/*
输出的内容为
(3,
2,
1
)//提示:没有重复的所有值 (1,
2,
3,
2,
2,
2
)//提示:有重复的所有值 */
}
return ;
}
//Student.h文件
#import <Foundation/Foundation.h> @interface Student : NSObject /**
学号
*/
@property (nonatomic,assign)int num;
/**
语文成绩
*/
@property (nonatomic,assign)double chinese;
/**
语文成绩
*/
@property (nonatomic,assign)double math;
/**
语文成绩
*/
@property (nonatomic,assign)double english; - (instancetype)initWithNum:(int)num chinese:(double)chinese math:(double)math english:(double)english; + (instancetype)studentWithNum:(int)num chinese:(double)chinese math:(double)math english:(double)english;
 1 //Student.m文件
#import "Student.h" @implementation Student - (instancetype)initWithNum:(int)num chinese:(double)chinese math:(double)math english:(double)english{ self = [super init];
if(self){
_num = num;
_chinese = chinese;
_math = math;
_english = english;
}
return self; } + (instancetype)studentWithNum:(int)num chinese:(double)chinese math:(double)math english:(double)english{ return [[Student alloc]initWithNum:num chinese:chinese math:math english:english]; } @end

利用KVC的方式更方便地获取数组中对象的属性的最值平均值等的更多相关文章

  1. freemarker获取封装类中对象的属性

    freemarker获取封装类中对象的属性 1.设计思路 (1)封装学生类 (2)创建数据模型 (3)新建student.ftl (4)运行Junit测试文件,生成HTML文件 2.封装学生类 Stu ...

  2. freemarker获取封装类中对象的属性(六)

    freemarker获取封装类中对象的属性 1.设计思路 (1)封装学生类 (2)创建数据模型 (3)新建student.ftl (4)运行Junit测试文件,生成HTML文件 2.封装学生类 Stu ...

  3. PHP获取数组最后一个元素的键和值

    <?php /** * PHP获取数组中最后一个元素下标和值 */ $arr = ['1' => 'name', '3' => 2, 5 => 6, 'name' => ...

  4. php 获取数组第一个key 第一个键值对 等等

    PHP 获取数组中的第一个元素或最后一个元素的值或者键值可以使用 PHP 自带的数组函数. PHP 获取数组中的第一个元素的值或者键值所使用的函数: current() - 返回数组中当前元素值(即: ...

  5. springboot中spring.profiles.active来引入多个properties文件 & Springboot获取容器中对象

    1.    引入多个properties文件 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据, ...

  6. js获取数组中的最大值/最小值

    目录 前言 1. 使用Math的静态方法max/min 1.1 结合ES6的扩展运算符...使用 1.2 结合apply/call方法来使用 1.3 结合reduce来使用 2. 排序获取 2.1 只 ...

  7. php获取数组中重复数据的两种方法

    分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...

  8. Javascript获取数组中的最大值和最小值的方法汇总

    比较数组中数值的大小是比较常见的操作,下面同本文给大家分享四种放哪广发获取数组中最大值和最小值,对此感兴趣的朋友一起学习吧   比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用 ...

  9. Java获取未知类型对象的属性

    获取未知类型对象的属性通常有两种方式: 一是通过自定义注解的方式,通过获取被注解的属性从而获取属性的值,这种方式也是Spring参数注入的重要实现手段 二是通过反射获取属性的名称,通过属性名从而获取属 ...

随机推荐

  1. 如何编写高效的SQL

    编写高效的sql可以给用户带来好的体验,需要开发这没有意识到这一点因为他们不关心也不知道怎么做.高效的sql可以给用户节省很多时间,这样就不需要dba来找上门,也不需要搭建RCA和性能调优. 性能不好 ...

  2. webpack的Hot Module Replacement运行机制

    使用webpack打包,难免会使用Hot Module Replacement功能,该功能能够实现修改.添加或删除前端页面中的模块代码,而且是在页面不刷新的前提下.它究竟是怎么运作的呢?本文主要从调试 ...

  3. 收集了一些容易出错的题,可能大家也不会注意到的基础知识(js)

    ---恢复内容开始--- 1.题中运用到函数表达式.构造函数.原型.优先级.this. 2.参数影响 3.对原型的运用 4.递归 5.基本类型与引用类型传递 6.优先级 7.自调用函数 ---恢复内容 ...

  4. 学会git玩转github,结尾有惊喜!有惊喜!有惊喜!

    一.什么是Github Github是全球最大的社交编程及代码托管网站(https://github.com/). Github可以托管各种git库,并提供一个web界面(用户名.github.io/ ...

  5. 初步研究一下sourceTree

    今天研究sourceTree,在此小结一下 1.下载链接:https://www.atlassian.com/software/sourcetree 2.安装,注册账户登录,连接到GitHub账号上, ...

  6. [CF787D]遗产(Legacy)-线段树-优化Dijkstra(内含数据生成器)

    Problem 遗产 题目大意 给出一个带权有向图,有三种操作: 1.u->v添加一条权值为w的边 2.区间[l,r]->v添加权值为w的边 3.v->区间[l,r]添加权值为w的边 ...

  7. HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配)

    HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配) Description The zoo have N cats and M dogs, toda ...

  8. input输入框自动填充黄色背景解决方案

    chrome表单自动填充后,input文本框的背景会变成偏黄色的,这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对其赋予以下样式: ...

  9. python web开发之django

    上一篇介绍了python-web.py的开发,本节课我们详细说明django的开发与使用. 简介及可以学习到的内容: 1.Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表 ...

  10. JSON的详细介绍

    JSON的语法可以表示以下三种类型的值: 简单值:可以表示字符串,数值,布尔值,null,但不支持undefined. 对象(Object):对象作为一种复杂数据类型,表示的是一组无序的键值对儿. 数 ...