OC-集合2(字典,NSSet)

字典

  • 字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。即:存储方式为通过 键-值 对的方式来存放数据的一种无序集合。

  • 字典也被称为散列表或关联数组。

  • 不同于数组,字典使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。

  • 一般通过key来操作object。某种意义上,对字典的运算实际上就是对key值的运算。

  • 字典分为不可变字典NSDictionary和可变字典NSMutableDictionary。

    1.初始化:方法用逗号

       NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"one",@"1",@"two",@"2", nil];
        NSDictionary *dictionary2 = [NSDictionary dictionaryWithObjectsAndKeys:@"one",@"1",@"two",@"2", nil];

2.字典的快速生成

      //key : value
        NSDictionary *dictionary3 = @{@"1":@"one",
                                      @"2":@"two"};

        NSLog(@"dic3 = %@",dictionary);

        //简化适合不可变字典,不推荐可变字典使用。

3.查询一个对象

      id object = [dictionary3 objectForKey:@"2"];
        NSLog(@"object = %@",object);

4.取出所有的key

      NSArray *keys = [dictionary3 allKeys];
        NSLog(@"keys = %@",keys);

5.取出所有的对象

      NSArray *values = [dictionary3 allValues];
      NSLog(@"values = %@",values);

字典的遍历


//取出字典中所有的key或object,然后通过数组的遍历方法逐个取出对象:

      NSArray *keys = [dictionary3 allKeys];
        //for循环
        for (int i = 0; i < keys.count; i ++) {
            NSString *key = [keys objectAtIndex:i];
            id object = [dictionary3 objectForKey:key];
            NSLog(@"objec = %@",object);
        }

       // 快速枚举

        for (id keys in dictionary3) {
            NSLog(@"object1 = %@",keys);
            id obj = [dictionary3 objectForKey:keys];
            NSLog(@"obj = %@",obj);

        }

//注意:键不可以重复,值可以
    //  当设置的key值与原有key值重复时,会直接覆盖原来的键值对,这 也是更改字典数据的方法。

    //  和数组一样,在遍历的同时不要对字典做出改动,那样或导致异常。

NSMutableDictionary

  //初始化
        NSMutableDictionary *mutableDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",@"four",@"4", nil];

        //增

        [mutableDic1 setObject:@"five" forKey:@"5"];
        NSLog(@"dic1 = %@",mutableDic1);
        //删

        [mutableDic1 removeObjectForKey:@"5"];
        NSLog(@"dic1 = %@",mutableDic1);
        //查

       id object33 = [mutableDic1 objectForKey:@"4"];
        NSLog(@"ob33 = %@",object33);

        //改(根据key将原来的覆盖掉)
        [mutableDic1 setObject:@"three three" forKey:@"3"];
        NSLog(@"mudic1 = %@",mutableDic1);


//- setObject:forKey:方法,如果在字典中无法找到该key,则做添加处理。

NSSet

完全无序集合NSSet;

/*初始化如下,非常类似数组:分为NSSet和NSMutableSet*/

 //用于去除重复数
        NSSet *set1 = [NSSet setWithObjects:@"1",@"2",@"2",@"5",@"5",@"7", nil];

/*
里面的数据无法按照顺序取出,只能取出随即一个,或者一次性全部取出:
*/
        //取一个
       id object5 = [set1 anyObject];
        NSLog(@"ob5 = %@",object5);
        //取所有的
       NSArray *setArr =  [set1 allObjects];
        NSLog(@"setArr = %@",setArr);


   /*
   NSSet对象中不能存放重复对象,如果出现重复,最终只会保留一个,NSSet也常用来清除其他集合中的重复对象
*/     
        //去除数组里面的重复数
        NSArray *arr = @[@"1",@"2",@"2",@"5",@"5",@"7"];
        NSSet *set2 = [NSSet setWithArray:arr];
        NSArray *arr2 = [set2 allObjects];
        NSLog(@"arr2 = %@",arr2);
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值