OC中关于字典(可变字典)的使用---连载三

可变字典使用举例:

设计一个学生类Student, 有这些属性:name(姓名)、age(年龄)、score(分数)、(classNum)班级

(1)将如下学生添加到数组中

姓名年龄分数班级

Tom1782Class01

Jim2275Class01

Jerry3454Class01

Owen2298Class04

Steve1977Class05

(2)计算所有学生的平均分(年级的平均分)

(3)计算各个班级的平均分

(4)用名字作为key, value是学生对象,将这些学生存入字典。

main.m-------------------------------------------------------

int main(int argc, const char * argv[]) {

@autoreleasepool {

/* 第1步:添加学生到数组中 */

// 创建学生类-构建对象

// Tom

Student *tom = [[Student alloc] initWithName:@"Tom"

WithAge:17

WithScore:82

WithClassBan:@"Class01"];

// Jim

Student *jim = [[Student alloc] initWithName:@"Jim"

WithAge:22

WithScore:75

WithClassBan:@"Class01"];

// Jerry

Student *jerry = [[Student alloc] initWithName:@"Jerry"

WithAge:34

WithScore:54

WithClassBan:@"Class01"];

// Owen

Student *owen = [[Student alloc] initWithName:@"Owen"

WithAge:22

WithScore:98

WithClassBan:@"Class04"];

// Steve

Student *steve = [[Student alloc] initWithName:@"Steve"

WithAge:19

WithScore:77

WithClassBan:@"Class05"];

// 将学生添加入数组

NSMutableArray *arrayStudent = [NSMutableArray arrayWithObjects:tom, jim, jerry, owen, steve, nil];

//计算所有学生的平均分(年级的平均分)

CGFloat sum = 0;

for (Student *stu in arrayStudent) {

sum += stu.score;

}

NSLog(@"平均分:%.2f", sum / arrayStudent.count);

//计算各个班级的平均分

//字典

/*

{

@"class1": [tom, jerry]}

@"class2": [keven, jobs]}

}

*/

NSMutableDictionary *mDic = [NSMutableDictionary dictionary];

for (Student *stu in arrayStudent) {

//从学生中获取学生所在的班级

NSString *classNum = stu.classNum;

NSMutableArray *mArr = [mDic objectForKey:classNum];

//判断可变数组是否存在,如果不存在,则初始化此数组

if (mArr == nil) {

mArr = [NSMutableArray array];

[mDic setObject:mArr forKey:classNum];

}

//把学生添加到可变数组中

[mArr addObject:stu];

}

NSLog(@"mDic is %@", mDic);

//通过遍历字典 算出每个班的平均分

for (NSString *key in mDic) {

NSMutableArray *mArr = mDic[key];

CGFloat sum = 0;

for (Student *stu in mArr) {

sum += stu.score;

}

NSLog(@"%@班级的平均分为%.2f", key, sum / mArr.count);

}

//        用名字作为key, value是学生对象,将这些学生存入字典。

NSMutableDictionary *stuDic = [NSMutableDictionary dictionary];

for (Student *stu in arrayStudent) {

NSString *key = stu.name;

[stuDic setObject:stu forKey:key];

}

NSLog(@"stuDic is %@", stuDic);

}

return 0;

}

Student.h(学生类)-----------------------------------------------------------------------

@interface Student : NSObject

// 定义学生属性

{   // 姓名

NSString *_name;

// 年龄

NSInteger _age;

// 分数

NSInteger _score;

// 班级

NSString *_classNum;

}

// 定义方法

#pragma mark -(自定义初始化方法)

- (id)initWithName:(NSString *)name

WithAge:(NSInteger)age

WithScore:(NSInteger)score

WithClassBan:(NSString *)classNum;

#pragma mark -Set

#pragma mark -Get

- (NSString *)name;

- (NSInteger)age;

- (NSInteger)score;

- (NSString *)classNum;

@end

Student.m------------------------------------------------------------------------------

#import "Student.h"

@implementation Student

#pragma mark -(自定义初始化方法)

- (id)initWithName:(NSString *)name

WithAge:(NSInteger)age

WithScore:(NSInteger)score

WithClassBan:(NSString *)classNum

{

self = [super init];

if (self) {

//..

_name = name;

_age = age;

_score = score;

_classNum = classNum;

}

return self;

}

#pragma mark -Set

#pragma mark -Get

- (NSString *)name

{

return _name;

}

- (NSInteger)age

{

return _age;

}

- (NSInteger)score

{

return _score;

}

- (NSString *)classNum

{

return _classNum;

}

@end

时间: 2024-10-26 06:17:31

OC中关于字典(可变字典)的使用---连载三的相关文章

OC中动态创建可变数组的问题.有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).两种方法

<span style="font-size:24px;">//////第一种方法 // NSMutableArray *arr = [NSMutableArray array]; // for (int i = 0; i < 13; i ++) { // [arr addObject:[NSString stringWithFormat:@"lanou%d",i + 1]]; // } // NSLog(@"%@",arr);

OC—NSDictionary和NSMutabelDictionary 可变字典和不可变字典

OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法

字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 键值对在字典中是无序存储的 字典分:不可变字典(NSDictionary)和可变字典(NSMutableDictionary) 不可变字典一旦创建,键值对就不可更改,不可添加,不可删除,仅能读取key或者value 常用方法有: 1.创建字典对象 2.获取所有key值,获取所有value值 3.通过

oc中字典的实现方法详解

一:字典的基本概念 Foundation中的字典(NSDictionary,NSMutableDictionary)是由键-值对组成的数据集合.正如,我们在字典里查找单词的定义一样. 通过key(键),查找的对应的value(值),key通常是字符串对象,也可以是其他任意类型对象.在一个字典对象中,key的值必须是唯一的. 此外,字典对象的键和值不可以为空(nil),如果需要在字典中加入一个空值,可以加入NSNull对象 二:不可变字典-NSDictionary 1:初始化(以一个元素和多个元素

oc中字典的应用详解

NSDictionary *dic=[NSDictionary dictionaryWithObject:@"卢灿小样" forKey:@"lucan"]; NSLog(@"%@",dic); NSLog(@"%@",[dic objectForKey:@"lucan"]); //输出dic键值对个数 NSLog(@"%d",dic.count); NSDictionary *dic1=

OC中的字典

// ********************不可变最字典***************** /* NSDictionary * dic = [NSDictionary dictionaryWithObject:@"张三" forKey:@"name" ]; NSLog(@"%@", dic);//便利构造器创建字典 //字典里一个key只有一个vlaue, 但是一个value可以有好几个key NSDictionary  * dic1 = [[

OC基础 可变字典与不可变字典的使用

OC基础 可变字典与不可变字典的使用 1.不可变字典 1.1创建不可变字典 //创建字典 //注意: //1,元素个数是偶数 //2,每两个元素是一个键值对 //3,值在前,键在后 NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"huang",@"name",@"30",@"age", nil]; NSLog(@"%@",

OC中如何把数组中字典的数据转换成URL?

在使用objective-c语言开发iOS应用中,会向服务器通过URL请求一些数据,因此对URL的拼接肯定少不了.而在iOS中,我们一般是通过将字典中的数据拼接成我们要请求的URL字符串,那这个是怎么实现的呢?今天小编就将为大家分享一篇在网上看到的一位大神对Objective-C中把数组字典的数据转换成URL的剖析,一起来看看吧. 1.生成测试数据 字典中的键,我们一般是通过宏定义来初始化的,目的是便于维护,提高代码编写效率,下面是对key的宏定义: //定义字典键 #define A @"a&

OC中字典,数组,集合的关系和使用

1.不可变数据字典(NSDicionary) 字典:用来存储具有一一对应关系的数据.一个key 对应一个 value ,key起到了唯一标示的作用,key必须是唯一的,但是一个vlaue可以对应多个key.字典存储的是无序的元素,一对键值对组成了字典中的一个元素. ①.不可变字典初始化赋值 <span style="font-size:18px;"> //笑笑语法 NSDictionary *dic = @{@"name":@"zhangdan