一、数组类
     1、C语言数组的特点:数组是一个有序的集合,用来存储相同数据类型的元素,通过下标访问数组中的元素,下标从0开始。
     2、OC中的数组只能存储对象类型(必须是NSObject对象),但是对于对象的类型没有限制。
          1)通过下标访问数组元素,下标从0开始。
          2)NSArray:不可变数组,即:对象创建好以后,数组中元素个数不能发生变化。
          3)NSMutableArray:可变数组,即:对象创建好以后,数组中的元素可以灵活的进行增删改操作。
     3、NSArray的创建:
          1)初始化方法

NSArray *name = [[NSArray alloc] initWithObjects:@"frank", @"duck", @"money", nil];
     注:nil作为数组存放元素的结束标志,多个元素通过逗号间隔。
          2)便利构造器

NSArray *name1 = [NSArray arrayWithObjects:@"frank", @"duck", @"money", nil];
     3)字面量:使用“@[]”,”[]”中存入对应的对象,对象之间使用”,"相隔
NSArray *name2 = @[@"frank", @"duck", @"money"];
     4、NSArray常用方法

 // 元素个数
        NSLog(@"count = %ld", names.count);

        // 获取数组中指定下标对应的元素
        NSString *s = [names objectAtIndex:];
        NSLog(@"s = %@", s);

        // 字面量方式获取数组元素

        NSLog(]);

        // 用来判断数组中是否包含某一个给定的对象
        BOOL isContain = [name containsObject:@"duck"];
        NSLog(@"isContain = %d", isContain);

        // 获取数组元素对应的索引
        NSUInteger index = [name indexOfObject:@"duck"];
        NSLog(@"index = %ld", index);

        // 将字符串按规定的字符进行截取,得到一个数组
        NSString *string = @"frank,duck,money";
        NSArray *stringArray = [string componentsSeparatedByString:@","];
        NSLog(@"stringArray = %@", stringArray);
        string = [stringArray componentsJoinedByString:@""];
        NSLog(@"string = %@", string);
     5、NSMutableArray概述
          NSMutableArray是OC中的可变数组,NSMutableArray的父类是NSArray,具有NSArray所有的方法,同时在NSArray的基础上添加了对自身对象增删改的操作。
     6、NSMutableArray创建
          1)初始化方法(capacity 容量)

 NSMutableArray *mname = [[NSMutableArray alloc] initWithCapacity:];
     2)便利构造器
NSMutableArray *mname = [NSMutableArray arrayWithCapacity:];
NSDictionary *d2 = [NSDictionary dictionaryWithObjects:@[@"frank", @"duck", @"monkey"] forKeys:@[@"name1", @"name2", @"name3"]];
     3)字面量
NSMutableArray *mname = [@[@"frank", @"duck", @"money", @"cow"] mutableCopy];
     7、NSMutableArray常用方法

     // 数组中添加一个对象
        [mname addObject:@"black"];
         NSLog(@"mname = %@", mname);

        // 数组中指定位置插入一个对象
        [mname insertObject:];
         NSLog(@"mname = %@", mname);

        // 数组中移除一个对象
        [mname removeObject:@"white"];
         NSLog(@"mname = %@", mname);

        // 移除数组中最后一个对象
        [mname removeLastObject];
        NSLog(@"mname = %@", mname);

        // 移除数组中指定位置的元素
        [mname removeObjectAtIndex:];
        NSLog(@"mname = %@", mname);

        // 移除数组中所有的元素
        [mname removeAllObjects];
        NSLog(@"mname = %@", mname);

        // 使用指定的对象替换指定位置的对象
        [mname replaceObjectAtIndex: withObject:@"white"];
        NSLog(@"mname = %@", mname);

        // 交换指定的两个下标对应的对象
        [mname exchangeObjectAtIndex: withObjectAtIndex:];
        NSLog(@"mname = %@", mname);
二、字典类
     1、字典是一个无序的集合,用来存储具有一一对应关系的数据。字典中存储的每一个对象都是一对键值对,键值对包含两个部分key和value,key与value的值都是对象类型。对于每一对key-value称为一个条目(Entry)。
     2、字典的特点:与数组不同,字典靠key存取元素;key与value必须都是对象类型;字典中键值对的存储是无序的;字典分为两种类型不可变字典(NSDictionary),可变字典(NSMutableDictionary)。 
     3、NSDictionary的创建
          1)初始化方法

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"frank", @"name1", @"duck", @"name2", @"monkey", @"name3", nil];
     注:先写value,再写key,一对key-value是一个元素,nil作为字典存放元素的结束标志。
          2)便利构造器

NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:@"frank", @"name1", @"duck", @"name2", @"monkey", @"name3", nil];
          3)字面量
          使用“@{}”,“{}”中存入字典元素,key:value一一对应,元素之间使用“,”相隔。
NSDictionary *d1 = @{@"key1":@"frank", @"key2":@"duck"};
     4、NSDictionary的常用操作

      // 获取字典中键值对的个数
        NSLog(@"count = %ld", dictionary.count);

        // 获取字典中所有的键
        NSLog(@"allKeys = %@", dictionary.allKeys);

        // 获取字典中所有的值
        NSLog(@"allValues = %@", dictionary.allValues);

        // 根据键获得对应的值
        NSString *anAttribute = [dictionary objectForKey:@"name1"];
        NSLog(@"anAttribute = %@", anAttribute);

        // 下标法
        NSLog(@"key1 = %@", d1[@"key1"]);
     5、NSMutableDictionary概述
          NSMutableDictionary的父类是NSDictionary,NSMutableDictionary具有父类所有的方法,同时在其基础上添加了增删改的操作。
     6、NSMutableDiction的创建
          1)初始化操作
           NSMutableDictionary *md = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"frank", @"name1", @"duck", @"name2", @"monkey", @"name3", nil];
          2)便利构造器
           NSMutableDictionary *md1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"frank", @"name1", @"duck", @"name2", @"monkey", @"name3", nil];
          3)字面量
           NSMutableDictionary *md2 = [@{@"key1":@"frank", @"key2":@"duck"} mutableCopy];
     7、NSMutableDictionary的常用方法 
        // 字典中添加新的键值对以及修改某一对键值对
        [md setObject:@"black" forKey:@"name4"];
        NSLog(@"%@", md);

        // 移除指定的键对应键值对
        [md removeObjectForKey:@"name3"];
        NSLog(@"%@", md);

        // 移除字典中所有的键值对
        [md removeAllObjects];
        NSLog(@"%@", md);
三、集合类
     1、集合的描述:集合作为OC中另一个容器,开发过程中使用的范围并没有数组和字典频繁。OC中的集合分为不可变集合(NSSet)和可变集合(NSMutableSet)两种。
     2、集合的特点:1)互异性,集合中不能够存在两个相同的对象
          2)无序性,集合中的对象没有顺序,先添加的对象不一定在集合中的第一个位置,后添加的也不一定在最后的位置。
          3)集合经常用来处理重用问题
     3、NSSet的创建
          1)初始化方法
                NSSet *set = [[NSSet alloc] initWithObjects:@"frank", @"duck", @"monkey", nil];
          2)便利构造器
                NSSet *set1 = [NSSet setWithObjects:@"frank", @"duck", @"monkey", nil];
     4、NSSet的常用操作
           // 任意取出一个元素
        NSString *str = [set anyObject];
        NSLog(@"str = %@", str);

     // 取出所有元素
        NSArray *arra1 = [set allObjects];
        NSLog(@"str1 = %@", arra1);

     // 获取集合中元素的个数
        NSLog(@"count = %lu", set.count);

     // 判断集合中是否包含某一个指定的对象

        BOOL isHave = [set containsObject:@"frank"];
        NSLog(@"isHave = %d", isHave);
     5、NSMutableSet的创建
          1)初始化方法
                NSMutableSet *mSet = [[NSMutableSet alloc] initWithObjects:@"frank", @"duck", @"monkey", nil];
          2)便利构造器
                NSMutableSet *mSet1 = [NSMutableSet setWithObjects:@"frank", @"duck", @"monkey", nil];
     6、NSMutableSet的常用操作
       // 添加对象
        [mSet addObject:@"-1"];
        NSLog(@"mSet = %@", mSet);

        // 删除对象
        [mSet removeObject:@"-1"];
        NSLog(@"mSet = %@", mSet);

        // 删除所有对象
        [mSet removeAllObjects];
        NSLog(@"mSet = %@", mSet);

iOS学习之Object-C语言集合的更多相关文章

  1. iOS学习08之C语言内存管理

    本次主要学习和理解C语言中的内存管理 1.存储区划分 按照地址从高到低的顺序:栈区,堆区,静态区,常量区,代码区 1> 栈区:局部变量的存储区域 局部变量基本都在函数.循环.分支中定义 栈区的内 ...

  2. iOS学习07之C语言指针

    本次随笔主要是为了学习和理解C语言中的指针,指针树状图如下: 1.访问数据的两种方式 1> 直接访问:定义变量后,直接访问变量 ; printf("a = %d\n", a) ...

  3. 【IOS学习】【Swift语言】

    基本语法: OS X playground 引入 import Cocoa IOS playground 引入 import UIKit 基本数据类型 let 定义常量 定义完成之后无法修改 var ...

  4. ios学习之旅---c语言函数

    1.函数的概述 C源程序是由函数组成的. 尽管在前面各章的程序中大都仅仅有一个主函数main(),但有用程序往往由多个 函数组成. 函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能. C语 ...

  5. 李洪强iOS开发之零基础学习iOS开发】【02-C语言】01-概述

    前面已经给大家介绍了iOS开发相关的一些基础知识,其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言.iOS开发需要学习的主要程序设计语言有:C语言.C+ ...

  6. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

  7. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  8. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

  9. iOS学习——iOS开发小知识点集合

    在iOS学习和开发过程中,经常会遇到一些很小的知识点和问题,一两句话就可以解释清楚了,这样的知识点写一篇随笔又没有必要,但是又想mark一下,以备不时之需,所以就有了本文.后面遇到一些小的知识点会不断 ...

  10. object - c 语言基础 进阶笔记 随笔笔记

    重点知识Engadget(瘾科技)StackOverFlow(栈溢出)Code4Apprespon魏先宇的程序人生第一周快捷键: Alt+上方向键 跳到最上面  Alt+下方向键 跳到最下面      ...

随机推荐

  1. Andriod项目开发实战(1)——如何在Eclipse中的一个包下建新包

    最开始是想将各个类分门别类地存放在不同的包中,所以想在项目源码包中新建几个不同功能的包eg:utils.model.receiver等,最后的结果应该是下图左边这样的:   很明显建立项目后的架构是上 ...

  2. java swing 使用按钮关闭窗口

    目的是给JButton添加点击操作,使指定JFrame窗口关闭. 网上不少说法是采用frame.dispose();的方法 但是采用frame.dispose();并没有使添加在frame上的wind ...

  3. 【MySQL】删除大表的讨论【转】

    转自http://tech.ddvip.com/2013-07/1373269453198566.html 微博上讨论MySQL在删除大表engine=innodb(30G+)时,如何减少MySQL ...

  4. 【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结

    Sql server 7.0/2000下 SqlCacheDependency使用轮询的方式进行缓存失效检查, 虽然ms说对服务器压力不大, 但还是有一些的, 而且对于不常改动的混存内容无休止的轮询感 ...

  5. 二级路由器设置为何要关闭DHCP服务

    因为如果不关闭dhcp的话会和一级路由相冲突,你这个因该是lan口的连接法吧,如果不然的话是不需要关闭dhcp功能的路由器和路由器的连接方法有两种,一种是wan口连,一种是lan口连方法1:WAN口连 ...

  6. 误删ext3的恢复方法

    1.Ext3文件系统结构的简单介绍在Linux所 用的Ext3文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分.每个文件还有一个节点,节点中包含有文件所有者, 读写 ...

  7. 卡通风格的连连看ios游戏源码

    卡通风格的连连看游戏源码,该游戏是一款韩国人做的卡通风格的ios连连看游戏源码,源码设计的效果非常漂亮的,而且运行起来感觉也很好.1.游戏采用倒计时模式2.该游戏是一款社交游戏,需要通过faceboo ...

  8. android应用商店完整版源码

    这个是从一个安卓学习的网站上转载过来的,android应用商店完整版源码,大家可以看看一下吧. _op><ignore_js_op> <ignore_js_op>< ...

  9. 1.异步消息Jms及其JmsTemplate的源代码分析,消息代理ActiveMQ

    一. 介绍 借助Spring,有多种异步消息的可选方案,本章使用Jms.Jms的消息模型有两种,点对点消息模型(队列实现)和发布-订阅消息模型(主题). 图1.点对点消息模型(一对一) 图2.发布-订 ...

  10. SVN命令收集

    1.检出 svn co  http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码 svn  co  svn://路径(目录或文件的全路径 ...