[TwistedFate] NSDictionary NSSet

1.NSDictionary不可变字典类
字典 是一个容器 跟数组一样 可以保存数据
保存的形式 是以键值对的形式
一个key对应一个value
key 和 value 必须是对象
key作为钥匙 要具有唯一性 在开发中 一半使用字符串作为key值
value可以是一个很复杂的结构 例如字典里嵌套一个字典
字典里保存的键值对是无序的

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

// 用两个数组来初始化 一个不可变字典
// key的数组
NSArray *keys = @[@"name",@"sex",@"age"];
// value 的数组
NSArray *values = @[@"王龙", @"男", @"15"];
// 初始化字典 便利构造器
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];
NSLog(@"%@",dic);   // 打印结果顺序不一样, 无序
// 自定义初始化方法
NSDictionary *dic1 = [[NSDictionary alloc] initWithObjects:values forKeys:keys]; 


// 初始化一个字典
// 使用该方法切记value : key 顺序
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"wanglong", @"name",@"nan", @"sex",@"18", @"age", nil];
// 语法糖初始化
// 顺序 key : value
NSDictionary *dic = @{@"name":@"wanglong",
                          @"sex":@"nan",
                          @"age":@"18"};

// 把所有的key都取出来
NSArray *arr = [dic allKeys]; // allkeys的返回值是不可变数组

// 取出所有的value
NSArray *arr1 = [dic1 allValues];
// 根据key取出字典里对应的value
// 取出的是什么类型 就用什么类型去接收
NSString *value = [dic objectForKey:@"name"];

2.可变字典

// 初始化一个空字典
// 切记 必须进行初始化才能使用字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
// 初始化的时候给一个建议的容量
    NSMutableDictionary *dic1 = [[NSMutableDictionary alloc] initWithCapacity:10];
// 初始化一个字典 并添加键值对
NSMutableDictionary *dic2 = [[NSMutableDictionary alloc] init];
    [dic2 setObject:@"wanglong" forKey:@"name"];
    [dic2 setObject:@"nan" forKey:@"sex"];
    [dic2 setObject:@"18" forKey:@"age"];

// 根据key删除键值对
[dic2 removeObjectForKey:@"sex"];
// 删除所有
[dic removeAllObjects];

// 快速遍历 一般只用来打印 删除可能会造成崩溃
// 使用快速遍历forin 时遍历字典 是遍历字典中的所有key值
    for (NSString *key in dic) {
        // 用所有key取出Value
        NSLog(@"key = %@ value = %@",key,[dic objectForKey:key]);

3.不可变集合 NSSet
集合的特点: 无序 不重复

// 初始化
NSSet *set = [[NSSet alloc] initWithObjects:@"1", @"2", @"3", @"2" ,@"2", @"2", nil];
// 获取长度
NSUInteger count = [set count];
NSLog(@"%lu",count);      // count = 3
// 获取集合中的一个元素 该元素是系统认为最合理的一个元素
NSString *str = [set anyObjects];
NSLog(@"%@",str);

4.可变集合

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



    // 计算重复元素个数的集合
    NSSet *set1 = [NSSet setWithObjects:@"1", @"2", @"3", @"3", @"3", @"3", @"3", @"3", nil];
    NSCountedSet *set = [NSCountedSet setWithSet:set1];
    NSLog(@"%@",set);
//
//    // 获取重复的个数
    NSInteger count = [set countForObject:@"3"];
    NSLog(@"%ld",count);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值