OC第五课
主要内容:字典、集合、数组排序
一、字典
演示样例:
name : @" 张三 " 。sex:@" 男 " ; age :@" 21 " ;
思考:怎么用字典保存?
字典:用于保存具有映射关系(key - value对)数据的集合,对于张三来说,key就是name,男来说。sex就是key
一个key - value对觉得是一个条目,字典是存储key - value对的容器
与数组不同,字典靠key存取元素,key不能反复,value必须是对象(value能够反复),键值对在字典中的存储是无序的
字典相同分为可变字典(NSMutableDictionary)、不可变字典(NSDictionary)
不可变字典(NSDictionary):
不可变字典一旦创建,键值对就不可更改、不可加入、不可删除,仅仅能读取key或者value
创建字典对象(三种方法):
便利构造器:NSDictionary *dict1 = [ [ NSDictionary dictionaryWithObjects : @[@"af", @"afaf", @"adada"] forkeys : @[ @"first", @"second" , @"three"] ] ;
初始化方法:NSDictionary *dict2 = [ [ NSDictionary alloc] initWithObjectsAndKeys : @"first" , @"afdaf" ,
@"second" , @"afadx" ] ;
字面量:NSDictionary *dict3 = @{@"first" : @"aex",
@"second" : @"af", } ;
经常用法:
1、获取全部的key值
[ dict1 allKeys ] ;
2、获取全部的value值
[ dict1 allValues ] ;
3、通过key值查询value
[ dict1 ObjectForKey : @"first" ] ;
可变字典(NSMutableDictionary):
不可变字典(NSDictionary)的子类
能够进行增删改查的操作
经常用法:
1、加入键值对
[ dict2 addEntriesFromDictionary : @{@"other" : @"afa" } ] ; / / 作用是将一个字典中的键值对放入还有一个字典中
[ dict2 setObject : @"other" forKey : @"axea" ] ;
2、改动key相应的值
[ dict2 setObject : @"afas" forKey : @"first" ] ;
3、删除键值对
[ dict2 removeObjectForKey : @"first" ] ;
[ dict2 removeAllObject ] ; / / 删除所有键值对
4、通过for循环遍历全部的键值对
for ( NSDictionary *obj int dict3 ) { / / 高速遍历方法
NSLog ( @" %@ " , obj) ; / / 高速遍历对字典来说,默认打印key值
}
二、集合
与数学中的集合一样,集合中的元素 “ 唯一 ”
元素是无序的,而且元素必须是对象,相同分为NSSet(不可变集合)、NSMutableSet(可变集合)
假设想从集合中取出元素,仅仅能随机取出一个
NSSet(不可变集合):
创建集合:NSSet *sets = [ NSSet setWithObjects : @"b" , @"c" , @"a", @"d", nil ] ;
经常用法:
1、获取元素个数 count
[ sets count ] ;
2、获取集合中的一个元素 anyObject
[ sets anyObject ] ;
3、推断集合中是否包括某个元素 containObject
[ sets containsObject ] ;
三、集合类型的高速枚举
for ( <#type *object#> in <#collection#>){
}
object是遍历得到的元素对象
collection是集合类型的对象:数组、字典、集合
特点:
数组枚举得到数组中的元素对象、
字典枚举得到字典中的key值、
集合枚举得到集合中的元素对象
四、数组排序
原来学的冒泡排序
演示样例:
int array[10] = { 2, 5, 4, 7, 6, 3} ;
for (int i = 0; i < 6 - 1 ; i++){
for(int j = 0; j < 6 - 1 - i ; j++){
int temp = array[ j ] ;
array[ j ] = array[ j + 1 ] ;
array[ j + 1 ] = temp ;
}
}
for(int i = 0 ; i < 6 ; i++){
printf("%d" , a[ i ]) ;
}
数组排序:
for (int i = 0; i < 6 - 1 ; i++){
for( 推断条件 ){
[array exchangeObjectAtIndex : j WithObjectAtIndex : j + 1 ] ;
}
}
OC第五课的更多相关文章
- NeHe OpenGL教程 第四十五课:顶点缓存
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- kali linux 渗透测试视频教程 第五课 社会工程学工具集
第五课 社会工程学工具集 文/玄魂 教程地址:http://edu.51cto.com/course/course_id-1887.html 目录 第五课社会工程学工具集 SET SET的社会工程 ...
- Adafruit的树莓派教程第五课:使用控制电缆
Adafruit的树莓派教程第五课:使用控制电缆 时间 2014-05-09 01:11:20 极客范 原文 http://www.geekfan.net/9095/ 主题 Raspberry PiM ...
- NeHe OpenGL教程 第三十五课:播放AVI
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第二十五课:变形
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第十五课:纹理图形字
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第五课:3D空间
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 斯坦福IOS开发第五课(第一部分)
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27706991 作者:小马 因为第五课的内容比較多.分两部分来写. 一 屏幕旋转基本 ...
- 【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见
内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是 ...
随机推荐
- WPF - 样式 (转)
本文目录 1.引言 2.怎样使用样式? 3.内联样式 4.已命名样式 5.元素类型样式 6.编程控制样式 7.触发器 1.引言 样式(Style),主要是用来让元素或内容呈现一定外观的属性.WPF中的 ...
- 我对webform的整改。
对于webfom,一种写法,将所有业务单元封装在一个pagebase里面,所有的页面继承自pagebase这个service外观,这样的结果就是,所有的页面单元上代码量会非常少.最大程度减少耦合,而最 ...
- 牧场行走(LCA)
神奇传送门 好吧,这题很有意思.. 第一眼撇的时候还以为是(SPFA)呜.... 然后发现要Q次询问就想到了LCA 但是发现不是求LCA.. 于是想到了一个神奇的定律: 两点的LCA一定在u到v的最短 ...
- usb驱动---What is the difference between /dev/ttyUSB and /dev/ttyACM【转】
转自:http://blog.csdn.net/ppp2006/article/details/25654733 https://www.rfc1149.net/blog/2013/03/05/wha ...
- 非常好的博客!!!linux内存管理概述【转】
转自:http://blog.csdn.net/bullbat/article/details/7166140 inux内存管理建立在基本的分页机制基础上,在linux内核中RAM的某些部分将会永久的 ...
- 计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)
若干年之前的一道题,当时能写出来还是超级开心的,虽然是个板子题.一直忘记写博客,备忘一下. 米勒拉判大素数,关于米勒拉宾是个什么东西,传送门了解一下:biubiubiu~ B. Goldbach 题目 ...
- Educational Codeforces Round 31 A. Book Reading【暴力】
A. Book Reading time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- POJ 3080-Blue Jeans【kmp,字符串剪接】
Blue Jeans Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20695 Accepted: 9167 Descr ...
- HDU 4417 Super Mario (划分树)(二分)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- PDF审计工具peepdf
PDF审计工具peepdf PDF是Portable Document Format(便携式文档格式)的缩写.它是Adobe公司推出的文件格式规范.现在,PDF是网络电子书籍的主流格式.由于PDF ...