主要内容:字典、集合、数组排序

一、字典

演示样例:

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第五课的更多相关文章

  1. NeHe OpenGL教程 第四十五课:顶点缓存

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. kali linux 渗透测试视频教程 第五课 社会工程学工具集

    第五课 社会工程学工具集 文/玄魂 教程地址:http://edu.51cto.com/course/course_id-1887.html   目录 第五课社会工程学工具集 SET SET的社会工程 ...

  3. Adafruit的树莓派教程第五课:使用控制电缆

    Adafruit的树莓派教程第五课:使用控制电缆 时间 2014-05-09 01:11:20 极客范 原文 http://www.geekfan.net/9095/ 主题 Raspberry PiM ...

  4. NeHe OpenGL教程 第三十五课:播放AVI

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. NeHe OpenGL教程 第二十五课:变形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  6. NeHe OpenGL教程 第十五课:纹理图形字

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. NeHe OpenGL教程 第五课:3D空间

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. 斯坦福IOS开发第五课(第一部分)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27706991 作者:小马 因为第五课的内容比較多.分两部分来写. 一 屏幕旋转基本 ...

  9. 【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见

    内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是 ...

随机推荐

  1. Bzoj3093 [Fdu校赛2012] A Famous Game

    Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 251  Solved: 136 Description Mr. B and Mr. M like to ...

  2. C++编程见闻

    今天心血来潮,看到很多天借的一本书<轻松学C++编程>,书就一般,但是由于自己的刚开始学c++,勉强凑活来看吧,就把学习的过程亮出来,权且对自己的一种变相激励也好. 程序一 首先:打开vi ...

  3. python--math

    >>> import math >>> >>> # ceil,取大于等于x的最小的整数值 >>> math.ceil(4) 4 ...

  4. Spring整合Disruptor3

    一.什么是Disruptor 从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列.那么它的应用场景自然就是“生产者-消费者”模型的应用场合了. 可以拿 JDK 的 Block ...

  5. Android (Notification)消息推送机制

    从网上查询资料学习Android消息推送机制,效果图如下: 1.首先是布局文件代码 activity_main.xml <?xml version="1.0" encodin ...

  6. 【转】Talend作业设计模式和最佳实践-Part I

    原文地址:https://mp.weixin.qq.com/s?__biz=MzA3OTg1Mzk4Nw==&mid=2453261363&idx=2&sn=e0f426022 ...

  7. 【转载】SQL server connection KeepAlive

    1.什么是SQL server TCP连接的keep Alive? 简单说,keep alive 是SQL server在建立每一个TCP 连接的时候,指定了TCP 协议的keepaliveinter ...

  8. React+React Router+React-Transition-Group实现页面左右滑动+滚动位置记忆

    2018年12月17日更新: 修复在qq浏览器下执行pop跳转时页面错位问题 本文的代码已封装为npm包发布:react-slide-animation-router 在React Router中,想 ...

  9. poj3311(状态压缩DP)

    poj3311 题意 给出一个矩阵,i 行 j 列表示位置 i 到 j 的时间. 求从 0 点出发经过 1 到 n 所有点后并返回 0 点最短耗时. 分析 先用 Floyd 算法,求出两点之间最短路, ...

  10. (转) view视图的放大、缩小、旋转

    控件移动,放大,缩小,旋转 1,代码添加控件 例如: /* 1.创建一个控件 2.设置控件的位置,大小 3.设置控件所需要的各个属性 4.添加入父控件 5.添加监听 */ UIButton *btn1 ...