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

一、字典

演示样例:

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. python 读取数据库时,datetime类型无法被json序列化--解决方案

    新增针对datetime的jsonencode: # -*- coding: utf-8 -*- import json from datetime import date, datetime cla ...

  2. Codevs 1710 == POJ 1190 生日蛋糕 == 洛谷P1731

    生日蛋糕 时间限制: 2 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ ...

  3. 语音提示辅助类MySoundAlertUtil

    package com.jlb.scan.util; import android.content.Context; import android.media.AudioManager; import ...

  4. 【IDEA】IDEA中更新Maven的索引与像Eclipse那样搜索坐标

    1.添加坐标,像Eclipse那样搜索: 右击项目中pom.xml中,然后选择Generate(快捷键是Alt+Insert)->Dependency之后输入关键字查询 或者在pom.xml中直 ...

  5. YYH的营救计划(NOIP模拟赛Round 6)

    题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!YYH感动的热泪盈眶,开起了门…… YYH的父亲下班回家,街坊邻居说YYH被一群陌生人强行押上了警车!YYH的父 ...

  6. sunos 修改shell为bash

    root:x:::Super-User:/:/sbin/sh 改为 root:x:::Super-User:/:/usr/bin/bash 修改/增加 .profile 文件,在¥HOME路径下 ex ...

  7. windows实时监测热插拔设备的变化2

    //动态监测设备插拔 #include <Dbt.h> BEGIN_MESSAGE_MAP(ParticipateMeeting, CDialogEx) ON_WM_DEVICECHANG ...

  8. 基于UDT connect连接通信以及文件传输--客户端

    上面一篇文章中提出了服务端的,其实这里没有严格意义的服务端和客户端之分,因为我在代码中是基于UDP的,不存在服务端与客户端,两个都是对等的,只是我这里进行一下简单的区分而已.在这里,客户端所进行的主要 ...

  9. Centos 6.3软件安装

    一.软件安装包的类型: 1. tar包,如software-1.2.3-1.tar.gz.它是使用UNIX系统的打包工具tar打包的. 2. rpm包,如software-1.2.3-1.i386.r ...

  10. git的使用01

    直接下载安装git,这里就不演示了,如果安装成功,在桌面任意空白处单击鼠标右键,会多出两个选项 Git Gui Here和Git Bash Here,我们一般使用git bash here 右键之后点 ...