1.不可变字典
// 字典里的元素是无序
1.1 创建不可变字典 (初始化方法,便利构造器)
// 初始化方法(值在前,键在后)
NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"1的value",@"1",@"2的value",@"2",nil];
// 输出dic1
NSLog(@"%@",dic1);
// 便利构造器(值在前,键在后)
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"3的value",@"3",@"4的value",@"4", nil];
// 输出dic2
NSLog(@"%@",dic2);
// 字面量(键在前,值在后)(常用)
NSDictionary *dic3 = @{@"5":@"5的value",@"6":@"6的value"};
NSLog(@"%@",dic3);
1.2 不可变字典的几个属性(count,allkeys,allvalues)
// count 字典里的键值对的个数
NSInteger count = dic1.count;
NSLog(@"%ld",count);
// allKeys 字典里的所有key的值
NSLog(@"%@",dic1.allKeys);
// allValues 字典里所有的value的值
NSLog(@"%@",dic1.allValues);
1.3 遍历不可变字典 (遍历的三种方式)
// 第一种:for
for(int i = 0; i < dic1.count; i++){
NSLog(@"%@ : %@",dic1.allKeys[i],dic1.allValues[i]);
}
// 第二种:for in 借助allKeys
for (NSString *key in dic1.allKeys) {
NSLog(@"%@ : %@",key,[dic1 objectForKey:key]);
}
// 第三种:for in直接访问(常用)
for (NSString *key in dic1) {
NSLog(@"%@ : %@",key,dic1[key]);
}
2.可变字典
2.1 创建可变字典 (两种方式)
// 2.1 创建可变字典 (两种方式)
// 初始化方法(值在前,键在后)
NSMutableDictionary *dic4 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"7的value",@"7",@"8的value",@"8", nil];
// 输出
NSLog(@"%@",dic4);
// 便利构造器(值在前,键在后)
NSMutableDictionary *dic5 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"9的value",@"9",@"10的value",@"10", nil];
// 输出
NSLog(@"%@",dic5);
2.2 可变字典的方法(添加,修改,删除)
// 向可变字典中添加键值对
[dic5 setObject:@"11的value" forKey:@"11"];
// 输出
NSLog(@"%@",dic5);
// 修改可变字典中的值
[dic5 setObject:@"修改后的10的value" forKey:@"10"];
// 输出
NSLog(@"%@",dic5);
// setObject 当字典中有相对于的key的时候就把value修改,如果没有就添加一个新的键值对
// 删除
[dic5 removeObjectForKey:@"9"];
// 输出
NSLog(@"%@",dic5);
// 清空字典
[dic5 removeAllObjects];
// 输出
NSLog(@"%@",dic5);
2.3 遍历可变字典
和不可变字典的遍历方式一样,请看1.3,在此就不过多赘述了3.字典和数组的嵌套使用
// 新建八个数组对象
NSArray *arr1 = @[@"刘备",@"诸葛亮",@"赵子龙"];
NSArray *arr2 = @[@"曹操",@"曹丕",@"曹植"];
NSArray *arr3 = @[@"马腾",@"马超",@"马铁"];
NSArray *arr4 = @[@"孙权",@"孙策",@"孙坚"];
// 3.1 两层嵌套
// 新建一个字典,字典的元素是上面的数组
NSDictionary *dic = @{@"arr1":arr1, @"arr2":arr2,@"arr3":arr3,@"arr4":arr4};
// 遍历dic字典,输出字典里的数组里的元素
for (NSString *tempKey1 in dic) {
NSArray *tempArr1= dic[tempKey1];
for (NSString *tempStr2 in tempArr1) {
// 输出
NSLog(@"%@",tempStr2);
}
// 输出分界线
NSLog(@"\n");
}
// 3.2 三层嵌套
// 新建两个字典,字典的元素是上面定义的数组对象
NSDictionary *dic1 = @{@"arr1":arr1,@"arr2":arr2};
NSDictionary *dic2 = @{@"arr3":arr3,@"arr4":arr4};
// 新建一个数组,数组元素是上面创建的字典对象
NSArray *arr = @[dic1,dic2];
// 遍历输出
for (NSDictionary *tempDic1 in arr) {
for (NSString *tempKey2 in tempDic1) {
NSArray *tempArr2 = tempDic1[tempKey2];
for (NSString *tempStr3 in tempArr2) {
// 输出
NSLog(@"%@",tempStr3);
}
// 输出分界线
NSLog(@"\n");
}
}
4. 集合
4.1 创建集合
// 初始化方法
NSSet *set1 = [[NSSet alloc] initWithObjects:@"first",@"second",@"third", nil];
NSLog(@"%@",set1);
// 便利构造器
NSSet *set2 = [NSSet setWithObjects:@"one",@"two",@"three", nil];
NSLog(@"%@",set2);
4.2 遍历集合
for (NSString *temp in set1) {
NSLog(@"%@",temp);
}
4.3 集合的使用(主要是和数组配合使用)
集合的主要作用是和数组配合使用,去除掉数组中重复的元素
正常情况下要去除一个数组中重复的元素,每一个元素都需要和其他元素比较一遍,使用集合和数组配合将会大大的提升效率
正常情况下要去除一个数组中重复的元素,每一个元素都需要和其他元素比较一遍,使用集合和数组配合将会大大的提升效率
解释:因为集合中的元素不允许重复,当数组中重复的元素添加到集合中的时候,集合会自动屏蔽掉不添加,当再把集合中的元素添加到数组中的时候,数组中的元素就没有重复的了,但是因为集合里的元素是无序的所以去重后的数组中的元素是无序的,需要重新排序.
// 新建一个数组
NSArray *arr = @[@"8",@"1",@"2",@"3",@"1",@"1",@"2",@"5"];
// 新建一个集合将数组中的元素添加到集合中
NSSet *set = [NSSet setWithArray:arr];
// 新建一个新的数组,将集合中的元素添加到新数组中
NSArray *newArr = [NSArray arrayWithArray:set.allObjects];
// 输出新的数组
NSLog(@"%@",newArr);