进击的KFC:OC(五): 字典、集、数组排序

2023-12-22 08:38
文章标签 数组 排序 字典 oc kfc 进击

本文主要是介绍进击的KFC:OC(五): 字典、集、数组排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

⼀、字典类
字典⽤于保存具有映射关系(key-value对)数据的集合。
对于“name:张三”来讲,key就是“name”,key对应的value是“张三”
⼀个key-value对认为是⼀个条⺫(Entry),字典是存储key-value对的容器。

字典类的特点
与数组不同,字典靠key存取元素。
key不能重复,value必须是对象。
key 作为钥匙,要具有唯一性 在开发中,一般使用字符串作为
key值
value 可以是一个很复杂的结构,例如字典嵌套字典等
键值对在字典中是⽆序存储的。(若是有序的,就成数组了)
字典分:不可变字典(NSDictionary)和可变字典
(NSMutableDictionary)

pragma mark ——– 不可变字典

不可变字典: (切记:不能对不可变字典进行增删)

初始化一个字典
1.用两个数组 来初始化 一个不可变字典
// key 的数组:
NSArray *keys = [[NSArray alloc]initWithObjects:@”name”,@”sex”,@”age”, nil];
// value 的数组
NSArray *values = @[@”aaa”,@”man”,@”3”];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];

2.初始化一个字典
// 使用下面这个方法初始化时:切记: 是 value key 的顺序

 NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"wanglong",@"name",@"man",@"sex",@"3",@"age" ,nil];

把所有key取出来
NSArray *kes = [dic allKeys]; // allKeys,获取全部的key值,返回值类型是数组
取出所有value
NSArray *values = [dic allValues];

3.语法糖 key : value (和上面的2方法区分)

       NSDictionary *dic = @{@"name":@"wanglong",@"sex":@"man",@"age":@"3"};

根据key取出字典中对应的value
NSString *str = [dic objectForKey:@”sex”];

语法糖 取出字典key对应的value (类似数组a[1]这样,dic[key])
NSString *age = dic[@”age”];

pragma mark ——– 可变字典

切记:必须进行初始化,才能使用字典

1.初始化一个空字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
2.初始化的时候 给一个建议的容量

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

3.初始化一个空字典
NSMutableDictionary *dic2 = [[NSMutableDictionary alloc]init];

添加键值对(注意:是 set 不是add)
[dic setObject:@”Wanglong” forKey:@”name”];
[dic setObject:@”man” forKey:@”sex”];
[dic setObject:@”3” forKey:@”age”];

删除: 把整个键值对删除了
[dic removeObjectForKey:@”sex”];
NSLog(@”%@”,dic);
// 删除全部:
[dic removeAllObjects];
NSLog(@”%@”,dic);

// 创建一个字典 姓名:王龙 性别:男 年龄:NSMutableDictionary *dic = [NSMutableDictionary dictionary];[dic setObject:@"王龙" forKey:@"姓名"];[dic setObject:@"男" forKey:@"性别"];[dic setObject:@"18岁" forKey:@"年龄"];
 // 遍历字典:// 遍历数组// 取出所有keyNSArray *keys = [dic allKeys];for (int i = 0; i < [keys count]; i++) {// 取出每一个keyNSString *key = keys[i];// 再利用这个key取出对应的valueNSString *value = dic [key];NSLog(@"%@ %@",key,value);// 或者://        NSString *value2 = [dic objectForKey:keys[i]];//        NSLog(@"%@ %@",keys[i],value2);}
    // 快速遍历forin时// 遍历字典 是遍历字典中的所有key//        for (NSString *obj in dic) {
//            NSLog(@"%@",obj);
//            // 用所有key取出value
//            NSLog(@"%@",[dic objectForKey:obj]);
//            // 结合起来
//            NSLog(@"key = %@ value = %@",obj,[dic objectForKey:obj]);
//        }

⼆、集合类

pragma mark —— 集合

存储的元素是⽆序的
存储元素必须是对象类型
iOS中⽤Set表⽰集合,分NSSet和NSMutableSet

NSSet的常⽤⽅法
创建集合对象。
NSSet *set = [NSSet alloc]initWithObjects@”1”,@”2”,nil]
获取元素个数。
[set count]
获取集合中的某个元素。
[set anyObject]

NSMutableSet的常⽤⽅法

创建集合对象。
NSMutableSet *set = [NSMutableSet set];
添加元素。
[set addObject:@”2”];
删除元素
[set removeObject:@”2”];

pragma mark ——- 数组排序

   //  不可变数组NSArray *arr = @[@"1",@"3",@"4",@"6",@"8"];// 这种比较方法,对元素只比较第一位,                             升序NSArray *arrnew = [arr sortedArrayUsingSelector:@selector(compare:)];NSLog(@"%@",arrnew);// 可变数组// 可变数组排序 是不需要返回值的,因为操作的是原数组NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5", nil];[array sortUsingSelector:@selector(compare:)];NSLog(@"%@",array);

这篇关于进击的KFC:OC(五): 字典、集、数组排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/523299

相关文章

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、