首页 > 代码库 > OC第五课
OC第五课
主要内容:字典、集合、数组排序
一、字典
示例:
name : @" 张三 " ;sex:@" 男 " ; age :@" 21 " ;
思考:怎么用字典保存?
字典:用于保存具有映射关系(key - value对)数据的集合,对于张三来说,key就是name,男来说,sex就是key
一个key - value对认为是一个条目,字典是存储key - value对的容器
与数组不同,字典靠key存取元素,key不能重复,value必须是对象(value可以重复),键值对在字典中的存储是无序的
字典同样分为可变字典(NSMutableDictionary)、不可变字典(NSDictionary)
不可变字典(NSDictionary):
不可变字典一旦创建,键值对就不可更改、不可添加、不可删除,只能读取key或者value
创建字典对象(三种方法):
便利构造器:NSDictionary *dict1 = [ [ NSDictionary dictionaryWithObjects : @[@"af", @"afaf", @"adada"] forkeys : @[ @"first", @"second" , @"three"] ] ;
初始化方法:NSDictionary *dict2 = [ [ NSDictionary alloc] initWithObjectsAndKeys : @"first" , @"afdaf" ,
@"second" , @"afadx" ] ;
字面量:NSDictionary *dict3 = @{@"first" : @"aex",
@"second" : @"af", } ;
常用方法:
1、获取所有的key值
[ dict1 allKeys ] ;
2、获取所有的value值
[ dict1 allValues ] ;
3、通过key值查询value
[ dict1 ObjectForKey : @"first" ] ;
可变字典(NSMutableDictionary):
不可变字典(NSDictionary)的子类
可以进行增删改查的操作
常用方法:
1、添加键值对
[ dict2 addEntriesFromDictionary : @{@"other" : @"afa" } ] ; / / 作用是将一个字典中的键值对放入另一个字典中
[ dict2 setObject : @"other" forKey : @"axea" ] ;
2、修改key对应的值
[ dict2 setObject : @"afas" forKey : @"first" ] ;
3、删除键值对
[ dict2 removeObjectForKey : @"first" ] ;
[ dict2 removeAllObject ] ; / / 删除全部键值对
4、通过for循环遍历所有的键值对
for ( NSDictionary *obj int dict3 ) { / / 快速遍历方法
NSLog ( @" %@ " , obj) ; / / 快速遍历对字典来说,默认打印key值
}
二、集合
与数学中的集合一样,集合中的元素 “ 唯一 ”
元素是无序的,并且元素必须是对象,同样分为NSSet(不可变集合)、NSMutableSet(可变集合)
如果想从集合中取出元素,只能随机取出一个
NSSet(不可变集合):
创建集合:NSSet *sets = [ NSSet setWithObjects : @"b" , @"c" , @"a", @"d", nil ] ;
常用方法:
1、获取元素个数 count
[ sets count ] ;
2、获取集合中的一个元素 anyObject
[ sets anyObject ] ;
3、判断集合中是否包含某个元素 containObject
[ sets containsObject ] ;
三、集合类型的快速枚举
for ( <#type *object#> in <#collection#>){
}
object是遍历得到的元素对象
collection是集合类型的对象:数组、字典、集合
特点:
数组枚举得到数组中的元素对象、
字典枚举得到字典中的key值、
集合枚举得到集合中的元素对象
四、数组排序
原来学的冒泡排序
示例:
int array[10] = { 2, 5, 4, 7, 6, 3} ;
for (int i = 0; i < 6 - 1 ; i++){
for(int j = 0; j < 6 - 1 - i ; j++){
int temp = array[ j ] ;
array[ j ] = array[ j + 1 ] ;
array[ j + 1 ] = temp ;
}
}
for(int i = 0 ; i < 6 ; i++){
printf("%d" , a[ i ]) ;
}
数组排序:
for (int i = 0; i < 6 - 1 ; i++){
for( 判断条件 ){
[array exchangeObjectAtIndex : j WithObjectAtIndex : j + 1 ] ;
}
}
OC第五课