进击的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

相关文章

Java Map排序如何按照值按照键排序

《JavaMap排序如何按照值按照键排序》该文章主要介绍Java中三种Map(HashMap、LinkedHashMap、TreeMap)的默认排序行为及实现按键排序和按值排序的方法,每种方法结合实... 目录一、先理清 3 种 Map 的默认排序行为二、按「键」排序的实现方式1. 方式 1:用 TreeM

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

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. 模糊匹配方案参数化查询示例使用场景建议性能优