您的位置:首页 > 其它

OC初期-05字典,集合

2015-11-05 20:34 309 查看

字典

字典⽤于保存具有映射关系(key-value对)数据的集合。

一个key-value对认为是一个条⽬目(Entry),字典是存储key-value 对的容器。

特点:

与数组不同,字典靠key存取元素。

key不能重复,value必须是对象。

键值对在字典中是⽆无序存储的。

字典分:不可变字典(NSDictionary)和可变字典 (NSMutableDictionary)

不可变字典NSDictionary

字典一旦创建,键值对就不可更改,不可添加,不可删除。

仅能读取key或者value。

创建字典对象

1.用两个数组初始化一个不可变字典

NSArray  *keys = @[@"name",@"sex",@"age"];
NSArray *values = @[@"jtt",@"nan",@"24"];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];


2.自定义初始化方法

NSDictionary *dic1 = [[NSDictionary alloc]initWithObjects:values forKeys:keys];


3.构造遍历器方法(value,key)

NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:
@"jtt",@"name",
@"nan",@"sex",
@"24",@"age",nil];


4.语法糖(初始化顺序 { key : value ,…})

NSDictionary *dic = @{@"name" : @"jtt",
@"sex" : @"nan",
@"age" : @"18"};


获取所有key值,获取所有value值。

NSArray *keys = [dic2 allKeys];
NSArray *values = [dic2 allValues];


通过key值查询value。(取出的是什么类型,就用什么类型去接收)

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


获取元素个数

NSInteger count = [dic count];   


可变字典(必须先进行初始化,才能使用)

创建对象

1.NSMutableDictionary *dic = [NSMutableDictionary dictionary];

2.初始化的时候 给一个建议的容量

NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:10];

3.NSMutableDictionary *dic1 = [[NSMutableDictionary alloc]init];

添加键值对

[dic1 setObject:@"jtt" forKey:@"name"];
[dic1 setObject:@"nan" forKey:@"sex"];
[dic1 setObject:@"24" forKey:@"age"];


根据key删除键值对

[dic1 removeObjectForKey:@"sex"];

NSArray *keys = [dic1 allKeys];
[dic1 removeObjectsForKeys:keys];


快速遍历

for (容器中存的对象的类型 obj in 要遍历的容器(数组或字典)) {

NSLog(@”%@”,obj);

}

使用快速遍历forin时 一般只用来打印

遍历字典 是遍历字典中的所有key

for (NSString *key in dic) {
// 用所有key取出value
NSString *value = dic[key];
NSLog(@"%@ = %@",key,value);
}


遍历数组 是遍历数组中的每一个元素

for (NSString *str in arr1) {
NSLog(@"%@",str);
}


集合

特点:无序,不重复

不可变集合

初始化集合

NSSet *set = [[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"2", nil];


获取长度

NSInteger count = [set count];


获取集合中的一个元素,anyObject 返回一个计算机认为最合理的元素

NSString *str = [set anyObject];


可变集合

初始化空的集合

NSMutableSet *set = [NSMutableSet set];


添加元素

[set addObject:@"2"];
[set addObject:@"1"];
[set addObject:@"3"];
[set addObject:@"2"];


3 删除元素

[set removeObject:@"2"];
[set removeAllObjects];


4.计算重复元素个数的集合

NSArray *arr = @[@"1",@"2",@"3",@"3",@"3" ];
NSCountedSet *set3 = [NSCountedSet setWithArray:arr];
NSInteger count = [set3 countForObject:@"3"];
NSLog(@"%ld",count);


数组排序

不可变数组排序

NSArray *array = @[@"1",@"3",@"4",@"26",@"8"];
NSArray *arrayNew = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",arrayNew);


可变数组排序(不需要返回值,操作的是原数组)

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5", nil];
[arr sortUsingSelector:@selector(compare:)];
NSLog(@"%@",arr);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: