ObjectC----字典类和集合类以及快速枚举和OC中的数组排序

// Create By 郭仔  2015年04月01日20:06:36

//
不可变字典

// 字典是适用于存放键值对的一种集合,里面的元素必须是对象类型

//
字典是无序的

//
字典赋值

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"guozai",@"name",@"nan",@"sex",@"14",@"age" ,nil];

// 直接打印字典名就可以

NSLog(@"%@",dic);

//
取出来的键值都用NSString*
指向

NSString *age = [dic objectForKey:@"age"];

NSLog(@"%@",age);

NSString *nam = [dic objectForKey:@"name"];

NSLog(@"%@",nam);

// NSString * sex = [dic objectForKey:@"sex"];

NSLog(@"%@",[dic objectForKey:@"sex"]);

//
获取所有的key值

NSArray * keys = [dic allKeys];

//直接打印数组名

NSLog(@"%@",keys);

//
获取所有的value值

NSArray * objects = [dic allValues];

NSLog(@"%@",objects);

//=========================================================

//
可变字典

// 根据已有字典创建新字典

NSMutableDictionary *mulDic = [NSMutableDictionary dictionaryWithDictionary:dic];

//
添加键值对 score->100

[mulDic setObject:@"100" forKey:@"score"];

NSLog(@"%@",mulDic);

//
删除键值对sex->nan

[mulDic removeObjectForKey:@"sex"];

NSLog(@"%@",mulDic);

// 修改键值对的值,其实就是添加的方法设置就行

[mulDic setObject:@"13" forKey:@"age"];

NSLog(@"%@",mulDic);

//================================================

//
遍历字典

NSArray * allkeys = [mulDic allKeys];

for (int i = 0; i < [allkeys count]; i ++) {

//
获取下标对应的key

NSString * key = [allkeys objectAtIndex:i];

//
根据key获取value

NSString * value = [mulDic objectForKey:key];

NSLog(@"%@",value);

}

//
或则直接用allvalue方法取出所有value

NSArray * allValue = [mulDic allValues];

for (int i = 0; i < [mulDic count]; i ++) {

NSLog(@"%@",[allValue objectAtIndex:i]);

}

/*

1字典是适用于存放键值对的一种集合,里面的元素必须是对象类型,

2字典里面的key时唯一的,不能重复,但是value是可以重复的

3字典是一种无序集合,键值对顺序不确定,可以将字典理解成“下标是字符串的数组”

4字典通过key去值,设置值,修改值.遍历时,可以先便利所有的key,然后根据key值遍历value,或者直接通过allvalue方法遍历所有的值。

*/

//==============================================================

// NSSet
集合

//
使用便利构造器定义set

NSSet *set = [NSSet setWithObjects:@"guozai",@"zaigguo",@"guoguo", nil];

//
使用初始化方法定义set

NSSet *set2 = [[NSSet alloc]initWithObjects:@"guozai",@"zaiguo",@"guoguo", nil];

NSLog(@"%@,%@",set,set2);

// 获取所有元素,并打印

NSArray * sets = [set allObjects];

NSLog(@"%@",sets);

for (int i = 0; i < [sets count]; i ++) {

NSLog(@"%@",[sets objectAtIndex:i]);

}

//
获取set中任意一个元素

NSString *str = [set anyObject];// anyObject方法并不保证随机,一般都是第一个   
元素

NSLog(@"%@",str);

// 判断集合中是否包含某个元素

BOOL re = [set containsObject:@"guozai"];

if (re) {

NSLog(@"baohan");

}

else {

NSLog(@"bubaohan");

}

//========================================================

// NSMutableSet

// 根据已有集合创建新的集合

NSMutableSet * mulSet = [NSMutableSet setWithSet:set];

//
添加元素

[mulSet addObject:@"zaizai"];

NSLog(@"%@",mulSet);

//
删除元素

[mulSet removeObject:@"zaizai"];

NSLog(@"%@",mulSet);

// ===================================================

// NSCountedSet
是NSMutableSet的子类,可用来计算重复次数

NSCountedSet *countedSet = [NSCountedSet setWithSet:mulSet];

[countedSet addObject:@"guozai"];

NSUInteger count = [countedSet countForObject:@"guozai"];

NSLog(@"%ld",count);

// ===================================================

// 在使用快速枚举遍历集合中的元素时,不能对集合里面的元素进行增删操作,否则会崩溃

//
数组的快速枚举

NSMutableArray * arr = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];

for (NSString *str in arr) {

NSLog(@"%@",str);

//
不能增删

}

//
字典的快速枚举

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"guozai",@"name",@"man",@"sex",@"19",@"age", nil];

// 字典的快速枚举遍历字典时,遍历的是字典的key;

for (NSString *str in dict) {

// NSString *value = [dict objectForKey:str];

// NSLog(@"%@",value);

NSLog(@"%@",str);//
打印出来的时key

}

//
集合的快速枚举

NSMutableSet * mulSet2 = [NSMutableSet setWithObjects:@"1",@"2", nil];

for (NSString *str in mulSet2) {

NSLog(@"%@",str);

}

// =======================================================

// sortedArrayUsingSelector会创建一个新的数组,不会影响原数组的元素

// sortUsingSelector不会创建新的数组,而在原数组的基础上调整元素的位置

// 比较方法的定义,比如下面compareByPrice方法在类中的定义

- (NSComparisonResult)compareByPrice:(Student1 *)stu

{

//
返回NSOrderedDescending==1才交换,返回其他两个不交换

if (_price > [stu price]) {

return NSOrderedAscending;// ==-1

}

else if(_price == [stu price])

{

return NSOrderedSame;// ==0

}

else      {

return NSOrderedDescending;

}

}

NSArray *sortedArray = [students sortedArrayUsingSelector:

@selector(compareByPrice:)];//小括号内是方法名

//
在原数组里面排序用[email protected]()方法

for (Student1 * stu in sortedArray) {

NSLog(@"%@",stu);

}

// 第一步:在model类中定义比较方法

// 第二步:
给数组发送排序消息

//
默认是升序

================================================================================

NSLog的description方法的重定义,打印对象时实现自己想要的输出

//
打印对象时,会调用对象的description方法

- (NSString *)description

{

NSString *str = [NSString stringWithFormat:@"name = %@,age = %d,score = %.2f",_name ,_age,_score];

return str;

}

时间: 2024-07-30 13:50:33

ObjectC----字典类和集合类以及快速枚举和OC中的数组排序的相关文章

OC --(5)-- 字典、集、数组排序:字典类、集合类、数组数组排序、字典、集合的快速遍历、数组排序

字典 1.快速枚举 forin   运行时不能更改内部数据 for (<#type *object#> in <#collection#>) { <#statements#> }         //对象                    //数组 for (Contact *contact in friends) {  [contact show];  } 判定是否为空  NSString *ns ==nil      NSInteger inte==0 一.字典

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=

NSDictionary使用快速枚举方法

上一章我们通过一个枚举器访问并返回字典里的键值, 现在我们通过快速枚举来查找键对应的值. 涉及到的方法: objectForKey: 这个方法的意思是返回一个值给对应的键, 下面使用了两次这个方法, 第一次没在循环里面使用, 输入了值@"1", 对应的值就是@"One". PS: 在这里, 我们找到了键, 就代表找到了值. 下面是例子: #import <Foundation/Foundation.h> int main(int argc, const

6、iOS快速枚举

今天在写程序的时候想在当前视图跳转的时候释放掉当前视图上面add的一些子视图.因为add的子视图有些是在别的类里面add进来的,当前页面不知道自己当前有哪几个类型的子视图.这样,我就想到了用循环遍历来查看当前视图有没有符合条件的子视图,如果有的话就释放掉. 我是这样写的: for(UIView * subView in self.view.subviews) { if([subView isKindOfClass:[XYZSeniorQueryView class]]) { [subView r

Objective-C中快速枚举和数组排序

快速枚举 for (<#type *object#> in <#collection#>){ } object是遍历得到的元素对象,collection是集合类型的对象:数组,字典,集合. 数组枚举得到数组中的元素对象. 字典枚举得到字典中的key值. 集合枚举得到集合中的元素对象. 1 // 数组 2 NSArray *arr = [NSArray arrayWithObjects:@"iPhone", @"demaxiya", @&quo

ios之快速枚举

for(UIView * subView in self.view.subviews) { if([subView isKindOfClass:[XYZSeniorQueryView class]]) { [subView removeFromSuperview]; subView = nil;//错误 } } 错误提示信息: Fast enumeration variables can't be modified in ARC by default;declare the variable _

python中将普通对象作为 字典类(dict) 使用

目前我知道的有两种方法: 1 定义的类继承dict类 例如 class A(dict): pass a = A() a['name'] = 12 2 给自定义的类添加 __setitem__() __getitem__()方法 class A: def __init__(self, cfg={}): <strong><span style="color:#ff0000;">self.cfg = cfg</span></strong> de

Swift字典类

在Foundation框架中提供一种字典集合,它是由"键-值"对构成的集合.键集合不能重复,值集合没有特殊要求.键和值集合中的元素可以是任何对象,但是不能是nil.Foundation框架字典类也分为NSDictionary不可变字典和NSMutableDictionary可变字典.一.NSDictionary类 NSDictionary有很多方法和属性,下面总结其常用的方法和属性. initWithDictionary: 构造器,通过Swift的Dictionary创建NSDicti