您的位置:首页 > 其它

OC第五天之 Dictionary NSSet 数组排序

2015-11-02 21:04 381 查看
字典 是一个容器 跟数组一样  可以保存数据
保存的形式  是以 键值对的形式保存
一个key对应一个value
key和value必须是对象
key作为钥匙 要具有唯一性   在开发中一般使用字符串作为key值
value 可以是一个很复杂的结构 例如字典里嵌套字典等
字典里保存的键值对是无序的
下面是dictionary的结构图
key       value
@"A" 对应  姓A的一个联系人
@"A" 对应  保存姓A所有人的数组
@"A" 对应  一个字典  @"男":保存姓A所有男人的一个数组
@"女":保存姓A所有女人的一个数组

不可变字典 切记不能对不可变字典进行增删

用两个数组 来初始化 一个不可变字典
两个数组元素是对应,顺序不一样
key的数组
NSArray *keys = @[@"name",@"sex",@"age"];
// value的数组
NSArray *values = @[@"wanglong",@"man",@"18"];
初始化字典
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];
NSLog(@"%@",dic);

NSDictionary *dic = [[NSDictionary alloc]initWithObjects:values forKeys:keys];
NSLog(@"%@",dic);

初始化一个字典
使用该方法初始化  切记value :key顺序
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:
@"wang",@"name",
@"nan",@"sex",
@"18",@"age",
nil];
NSLog(@"%@",dic);
// 把所有key取出来
NSArray *keys = [dic allKeys];
NSLog(@"%@",keys);

// 自定义初始化方法
NSDictionary *dic1 = [[NSDictionary alloc]initWithObjectsAndKeys:@"wang",@"name",@"nan",@"sex",@"18",@"age", nil];
NSLog(@"%@",dic1);

// 取出所有的Value
NSArray *values = [dic1 allValues];
NSLog(@"%@",values);

// 语法糖
// 初始化顺序 key:value
NSDictionary *dic = @{@"name":@"wang", @"sex":@"nan",@"age":@"18"};
NSLog(@"%@",dic);

// 根据key取出字典中的对应的value
// 要知道 你取出的是什么类型 你就用什么类型去接收它
NSString *value = [dic objectForKey:@"name"];
NSLog(@"%@",value);
// 语法糖 取出字典中key对应的value
NSString *age = dic[@"age"];
NSLog(@"%@",age);
// 获取字典的元素个数
NSLog(@"%lu",[dic count]);

可变字典
初始化一个空字典
切记:必须进行初始化 才能使用字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary];


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

// NSMutableDictionary *dic1 = [[NSMutableDictionary alloc]initWithCapacity:10];

// NSMutableDictionary *dic2 = [[NSMutableDictionary alloc]init];

[dic setObject:@”wang” forKey:@”name”];

[dic setObject:@”nan” forKey:@”sex”];

[dic setObject:@”18” forKey:@”age”];

// 根据key删除键值对

[dic removeObjectForKey:@”sex”];

// 删除所有的键值对

[dic removeAllObjects];

NSLog(@”%@”,dic);

创建字典,管理前三排学生,每排为1组 并输出

NSMutableArray *array1 = [NSMutableArray array];
[array1 addObject:@"斜阳"];
[array1 addObject:@"赵姐"];
[array1 addObject:@"张文"];
[array1 addObject:@"壮壮"];

NSMutableArray *array2 = [NSMutableArray array];
[array2 addObject:@"大军"];
[array2 addObject:@"天天"];
[array2 addObject:@"小强"];
[array2 addObject:@"冰淇"];

NSArray *array3 = @[@"张杰",@"张鹏",@"乔迪",@"逃逃"];

NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:array1 forKey:@"first"];
[dic setObject:array2 forKey:@"second"];
[dic setObject:array3 forKey:@"third"];
NSLog(@"%@",dic);

// 创建一个字典 姓名:王龙  性别:男  年龄:18岁
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:@"王龙" forKey:@"name"];
[dic setObject:@"男" forKey:@"sex"];
[dic setObject:@"18岁" forKey:@"age"];
// 遍历字典
// 获取所有key
NSArray *array = [dic allKeys];
for (int i = 0; i < [array count]; i++) {
// 取出每一个key 利用这个key取出对应的Value
NSString *str =[dic objectForKey:array[i]];


// NSString *str = dic[array[i]];

// 打印

NSLog(@”%@:%@”,array[i],str);

}

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

NSLog(@"%@",obj);
}
数组的遍历
for (NSString *obj in array) {
NSLog(@"%@",obj);
}
快速遍历字典
使用快速遍历forin时
快速变量 一般只用来打印
遍历字典 是遍历字典中的所有key
遍历数组 是遍历数组中的每一个元素
for (NSString * key in dic) {
// 用所有key取出value
NSLog(@"%@:%@",key,dic[key]);
}

集合:  无序  不重复
不可变集合
NSSet *set = [[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"2", nil];
// 获取长度
NSLog(@"%ld",[set count]);
NSLog(@"%@",set);
// 获取集合中的一个元素
// anyObject返回一个计算机认为最合理的一个元素
NSString *str = [set anyObject];
NSLog(@"%@",str);

可变集合
初始化空的集合
NSMutableSet *set = [NSMutableSet set];
// 添加元素
[set addObject:@"2"];
[set addObject:@"1"];
[set addObject:@"3"];
[set addObject:@"2"];
NSLog(@"%@",set);
// 删除2元素
[set removeObject:@"2"];
NSLog(@"%@",set);
// 删除所有元素
[set removeAllObjects];
NSLog(@"%@",set);

计算重复元素个数的集合

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

数组排序
不可变数组排序
下面这个方法只能比较一位数
NSArray *array = @[@"A",@"D",@"C",@"F",@"B",@"E",];
NSArray *arrayNew = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",arrayNew);

可变数组排序
可变数组排序 是不需要返回值的 因为操作的是原数组
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5",nil];
[array sortUsingSelector:@selector(compare:)];
NSLog(@"%@",array);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: