OC初期-05字典,集合

字典

字典⽤于保存具有映射关系(key-value对)数据的集合。

一个key-value对认为是一个条⽬目(Entry),字典是存储key-value 对的容器。

特点:

与数组不同,字典靠key存取元素。

key不能重复,value必须是对象。

键值对在字典中是⽆无序存储的。

字典分:不可变字典(NSDictionary)和可变字典 (NSMutableDictionary)

  • 不可变字典NSDictionary

字典一旦创建,键值对就不可更改,不可添加,不可删除。
仅能读取key或者value。

创建字典对象

1.用两个数组初始化一个不可变字典

NSArray  *keys = @[@"name",@"sex",@"age"];
NSArray *values = @[@"jtt",@"nan",@"24"];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];

2.自定义初始化方法

NSDictionary *dic1 = [[NSDictionary alloc]initWithObjects:values forKeys:keys];

3.构造遍历器方法(value,key)

NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:
                      @"jtt",@"name",
                      @"nan",@"sex",
                      @"24",@"age",nil]; 

4.语法糖(初始化顺序 { key : value ,…})

NSDictionary *dic = @{@"name" : @"jtt",
                      @"sex" : @"nan",
                      @"age" : @"18"};                        

获取所有key值,获取所有value值。

NSArray *keys = [dic2 allKeys];
NSArray *values = [dic2 allValues];

通过key值查询value。(取出的是什么类型,就用什么类型去接收)

NSString *value = [dic objectForKey:@"name"];
NSString *age = dic[@"age"];

获取元素个数

 NSInteger count = [dic count];   
  • 可变字典(必须先进行初始化,才能使用)

创建对象

1.NSMutableDictionary *dic = [NSMutableDictionary dictionary];

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

NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:10];

3.NSMutableDictionary *dic1 = [[NSMutableDictionary alloc]init];

添加键值对

[dic1 setObject:@"jtt" forKey:@"name"];
[dic1 setObject:@"nan" forKey:@"sex"];
[dic1 setObject:@"24" forKey:@"age"];

根据key删除键值对

[dic1 removeObjectForKey:@"sex"];

NSArray *keys = [dic1 allKeys];
[dic1 removeObjectsForKeys:keys];

快速遍历

for (容器中存的对象的类型 obj in 要遍历的容器(数组或字典)) {
NSLog(@”%@”,obj);
}

使用快速遍历forin时 一般只用来打印
遍历字典 是遍历字典中的所有key

   for (NSString *key in dic) {
    // 用所有key取出value
    NSString *value = dic[key];
    NSLog(@"%@ = %@",key,value);
}

遍历数组 是遍历数组中的每一个元素

for (NSString *str in arr1) {
    NSLog(@"%@",str);
}

集合

特点:无序,不重复

不可变集合

  • 初始化集合

    NSSet *set = [[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"2", nil];
    
  • 获取长度

    NSInteger count = [set count];
    
  • 获取集合中的一个元素,anyObject 返回一个计算机认为最合理的元素

    NSString *str = [set anyObject];
    

可变集合

  1. 初始化空的集合

    NSMutableSet *set = [NSMutableSet set];
    
  2. 添加元素

    [set addObject:@"2"];
    [set addObject:@"1"];
    [set addObject:@"3"];
    [set addObject:@"2"];     
    

3 删除元素

     [set removeObject:@"2"];
     [set removeAllObjects];

4.计算重复元素个数的集合

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

数组排序

不可变数组排序

NSArray *array = @[@"1",@"3",@"4",@"26",@"8"];
NSArray *arrayNew = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",arrayNew);

可变数组排序(不需要返回值,操作的是原数组)

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5", nil];
[arr sortUsingSelector:@selector(compare:)];
NSLog(@"%@",arr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值