1.NSDictionary
//不可变字典类
//(1)如果不创建, 不能够使用
//(2)内部以key-value(键值对)形式存储
//(3)key必须唯一
//(4)是无序集合
//(5)value必须为对象, key一般为NSString
//name: 张三, age: 18, gender: 男
//创建字典
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"张三",@"name", [NSNumber numberWithInt:18], @"age", @"男", @"gender", nil];
NSLog(@"%@", dic);
//通过key获取value值
NSString *name = [dic objectForKey:@"name"];
NSLog(@"%@", name);
//获取所有的value值
NSArray *values = [dic allValues];
NSLog(@"%@", values);
//获取所有的key值
NSArray *keys = [dic allKeys];
NSLog(@"%@", keys);
//获取键值对的个数
NSUInteger count = [dic count];
NSLog(@"%ld", count);
2.NSMutableDictionary
//可变字典类, 继承于NSDictionary
//创建可变字典
NSMutableDictionary *mDic = [[NSMutableDictionary alloc] initWithCapacity:0];
//添加键值对
[mDic setObject:@"张三" forKey:@"name"];
[mDic setObject:[NSNumber numberWithInteger:18] forKey:@"age"];
[mDic setObject:@"男" forKey:@"gender"];
NSLog(@"%@", mDic);
//删除键值对
[mDic removeObjectForKey:@"name"];
NSLog(@"%@", mDic);
//修改键值对
[mDic setObject:@"女" forKey:@"gender"];
[mDic setObject:[NSNumber numberWithInteger:17] forKey:@"age"];
NSLog(@"%@", mDic);
//遍历字典的key值, 并打印key值对应的value值
NSArray *mKeys = [mDic allKeys];
for (int i = 0; i < [mDic count]; i++) {
NSLog(@"%@", [mKeys objectAtIndex:i]);
NSLog(@"%@", [mDic objectForKey:[mKeys objectAtIndex:i]]);
}
//for...in
//1.保证数组中的元素类型必须一致
//2.快速枚举时, 不能对数组进行修改(增删元素)
//forin用于数组, 遍历每一个元素
for (NSString *tempKey in [mDic allKeys]) {
NSLog(@"%@", tempKey);
NSLog(@"%@", [mDic objectForKey:tempKey]);
}
//forin用于字典, 遍历每一个key值
for (NSString *somthing in mDic) {
NSLog(@"%@", somthing);
}
//遍历字典value值
NSArray *mValues = [mDic allValues];
for (int i = 0; i < [mDic count]; i++) {
NSLog(@"%@", [mValues objectAtIndex:i]);
}
for (id value in [mDic allValues]) {
NSLog(@"%@", value);
}
//数组和字典的嵌套
NSMutableDictionary *student1 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"杨翔", @"name", [NSNumber numberWithInt:24], @"age", @"男", @"gender", nil];
NSMutableDictionary *student2 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"李珂", @"name", [NSNumber numberWithInt:23], @"age", @"男", @"gender", nil];
NSMutableDictionary *student3 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"江道洪", @"name", [NSNumber numberWithInt:22], @"age", @"男", @"gender", nil];
NSMutableArray *studentArray = [[NSMutableArray alloc] initWithCapacity:0];
[studentArray addObject:student1];
[studentArray addObject:student2];
[studentArray addObject:student3];
NSLog(@"%@", studentArray);
//做个练习,遍历数组打印学生信息
for (NSMutableDictionary *stu in studentArray) {
NSLog(@"%@", [stu objectForKey:@"name"]);
NSLog(@"%@", [stu objectForKey:@"age"]);
NSLog(@"%@", [stu objectForKey:@"gender"]);
}
for (NSMutableDictionary *stu in studentArray) {
for (NSString *key in stu) {
NSLog(@"%@", [stu objectForKey:key]);
}
}
NSMutableArray *nameArray = [[NSMutableArray alloc] initWithObjects:@"张三", @"李四", @"王麻子", nil];
NSMutableDictionary *girl = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"雪妮儿", @"name", [NSNumber numberWithInteger:18], @"age", @"女", @"gender", nameArray, @"candidate", nil]
NSLog(@"%@", girl);
//打印候选人名单
for (NSString *name in [girl objectForKey:@"candidate"]) {
NSLog(@"%@", name);
}
for (NSString *key in girl) {
if ([key isEqualToString:@"candidate"]) {
for (NSString *name in [girl objectForKey:key]) {
NSLog(@"%@", name);
}
}
}
//NSArray, NSDictionary, NSSet 都是集合类
3.NSSet, 不可变 集合类
//(1)元素必须是对象
//(2)无序
//(3)元素不能相同
NSSet *set = [[NSSet alloc] initWithObjects:@"1哈哈", @"2嘿嘿", @"3呼呼", @"4啦啦", @"5啊啊", @"6呀呀", nil];
NSLog(@"%@", set);
//元素个数
NSLog(@"%lu", [set count]);
//获取某个元素
NSLog(@"%@", [set anyObject]);
//获取所有元素
NSLog(@"%@", [set allObjects]);
//判断集合中是否包含某个对象
if ([set containsObject:@"2嘿嘿"]) {
NSLog(@"包含");
}
//子集合
NSSet *set1 = [[NSSet alloc] initWithObjects:@"1", @"3", @"4", @"5", nil];
NSSet *set2 = [[NSSet alloc] initWithObjects:@"3", @"4", @"5", nil];
if ([set2 isSubsetOfSet:set1]) {
NSLog(@"set2是set1的子集合");
}
4.NSMUtableSet, 可变集合类, 继承于NSSet
NSMutableSet *mSet = [[NSMutableSet alloc] initWithCapacity:0];
//添加元素
[mSet addObject:@"1"];
[mSet addObject:@"2"];
[mSet addObject:@"1"];
[mSet addObject:@"1"];
NSLog(@"%@", mSet);
NSMutableArray *mArray1 = [[NSMutableArray alloc] initWithCapacity:0];
[mArray1 addObject:@"1"];
[mArray1 addObject:@"2"];
[mArray1 addObject:@"1"];
[mArray1 addObject:@"1"];
NSLog(@"%@", mArray1);
//删除元素
[mSet removeObject:@"1"];
NSLog(@"%@", mSet);
//删除所有元素
[mSet removeAllObjects];
NSLog(@"%@", mSet);
Objc-C 知识点回顾 六 字典、集合
最新推荐文章于 2021-03-11 09:57:22 发布