Obejct-C中包含了三种集合,分别是:数组、字典和集(set)。

 
    数组和C语言中的数组相似,但是OC中的数组只能存储对象,不能存储基本数据类型,如int、float、enum、struct等,也不能存储nil。它也提供了编制好的索引对象,可以通过制定索引找到要查看的对象。包含可变数组(NSMutableArray)和不可变数组(NSArray)。
    字典存放的是“键值对”,即key-value,可以通过键值查找到字典中保存的对象。
    集保存的也是对象,集和字典中保存的对象都是无序的,但是字典可以通过key进行虚拟排序。
    集和字典中不能存在相同的对象,如果对象一致,且是开始定义时写入的,则后面的对象无法写入,如果是后来添加的,则会把原来相同的对象顶替。
 
    基本用法:
  • 数组
    初始化不可变数组:    
NSArray *array = [[NSArray alloc] initWithObjects:@"one",@"Two",@"Three",nil];此数组只有三个对象,one,two,three,最后的nil可以看出结束符,并不会存入数组中。
    NSLog(@"array count = %d",[array count]);  //打印数组中对象个数
    [array objectAtIndex:2]    //或许索引2处的对象
    初始化可变数组:
NSMutableArray *Mutablearray = [NSMutableArray arrayWithCapacity:0];    //设置可变数组初始长度为0;
 
    从一个数组拷贝到另一个数组
    Mutablearray = [NSMutableArray arrayWithArray:array];   //将array的对象拷贝到Mutablearray中
 
    在可变数组末尾添加对象
    [Mutablearray addObject:@"Four"];
 
    快速枚举:
    OC中提供了快速又集中的访问遍历数组、字典、集的方法,称为快速枚举
如,现在array数组中存在的是字符串的对象,所以快速枚举如下:
for(NSString *str in array)
{
      NSLog(@"array = %@",str);    //可以一一输出数组array中的对象
}
    
    从字符串分割到数组- componentsSeparatedByString:
    NSString *string = [NSString alloc] initWithString:@"One,Two,Three,Four"];

NSLog(@"string:%@",string);

NSArray *array = [string componentsSeparatedByString:@","];

NSLog(@"array:%@",array);

[string release];

//从数组合并元素到字符串- componentsJoinedByString:

NSArray *array = [NSArray alloc] initWithObjects:@"One",@"Two",@"Three",@"Four",nil];

NSString *string = [array componentsJoinedByString:@","];

NSLog(@"string:%@",string);

删除可变数组指定索引处的对象:

[Mutablearray removeObjectAtIndex:1];

    
 
  • 创建字典
    NSDictionary *dictionary = [NSDictionary alloc] initWithObjectsAndKeys:@"One",@"1",@"Two",@"2",@"Three",@"3",nil];

NSString *string = [dictionary objectForKey:@"One"];

NSLog(@"string:%@",string);

NSLog(@"dictionary:%@",dictionary);

[dictionary release];

创建可变字典:

//创建

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];

//添加字典

[dictionary setObject:@"One" forKey:@"1"];

[dictionary setObject:@"Two" forKey:@"2"];

[dictionary setObject:@"Three" forKey:@"3"];

[dictionary setObject:@"Four" forKey:@"4"];

NSLog(@"dictionary:%@",dictionary);

//删除指定的字典

[dictionary removeObjectForKey:@"3"];

NSLog(@"dictionary:%@",dictionary);

  • 集合NSSet

//NSSet中不能存在重复的对象

NSMutableSet *set1 = [[NSMutableSet alloc] initWithObjects:@"1",@"2",@"3", nil];

NSMutableSet *set2 = [[NSMutableSet alloc] initWithObjects:@"1",@"5",@"6", nil];

[set1 unionSet:set2];   //取并集1,2,3,5,6

[set1 intersectSet:set2];  //取交集1

[set1 minusSet:set2];    //取差集2,3,5,6

相关文章:

http://wenku.baidu.com/link?url=3wlXip1sYdUBWfXjFi58bc_MJChNoMAgA00ooevx8RQCForbdQMxHwJ43DQAAMfL_O7vgR0r1034DWLVWRGCpNjUbigqi1yM-RLEYO2R7fS

Object-C—集合的更多相关文章

  1. List<Object>对象集合一些扩展方法

    // 商品集合信息            List<Product> list = new List<Product>()            {               ...

  2. Object 接受集合里面的任意数据类型 所有的类型默认继承object

  3. JS的Object漫想:从现象到“本质”

    转自:http://zzy603.iteye.com/blog/973649 写的挺好,用于记录,把对象分成概念的Object(var f={})和 类的Object(function F(){}) ...

  4. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  5. Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例

    概要 这一章,我们对HashSet进行学习.我们先对HashSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashSet.内容包括:第1部分 HashSet介绍第2部分 HashSe ...

  6. Collection中list集合的应用常见的方法

    集合 : 用存放对象的容器(集合)     Collection : 跟接口 : 单列集合          ---> List :有序的 ,元素是可以重复的.          ---> ...

  7. Java中的集合框架

    概念与作用 集合概念 现实生活中:很多事物凑在一起 数学中的集合:具有共同属性的事物的总体 java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象 在编程时,常常需要集中存放多 ...

  8. 迭代输出Map和List<Map<String,Object>>的方法

    一.Map<String,Object> String:key的类型 Object:value的类型,value可能是String,或者int类型,什么类型都可以 对于Map接口来说,本身 ...

  9. C# - 集合类 - 集合类型

    Stack类 ns:System.Collections 此类模仿了一个简单的先进后出(LIFO)的集合 它实现了ICollection接口 可以通过三种方式创建Stack类对象 Stack stac ...

  10. List<Map<String, Object>>相关

    2016年8月6日13:53:00 --------------------------- List<Map<String, Object>> List集合新增列 则需要: L ...

随机推荐

  1. ACM ICPC Kharagpur Regional 2017

    ACM ICPC Kharagpur Regional 2017 A - Science Fair 题目描述:给定一个有\(n\)个点,\(m\)条无向边的图,其中某两个点记为\(S, T\),另外标 ...

  2. 关于ORA-04091异常的出现原因,以及解决方案

    问题分析 在Oracle中执行DML语句的时候是需要显示进行提交操作的.当我们进行插入的时候,会触发触发器执行对触发器作用表和扩展表的种种操作,但是这个时 候触发器和插入语句是在同一个事务管理中的,因 ...

  3. springboot + swagger2 生成api文档

    直接贴代码: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-sw ...

  4. php直接输出json格式

    php直接输出json格式,很多新手有一个误区,以为用echo json_encode($data);这样就是输出json数据了,没错这样输出文本是json格式文本而不是json数据,正确的写法是应该 ...

  5. HTTP协议头注射漏洞实例

    HTTP 响应头文件中包含未经验证的数据会引发 cache-poisoning.cross-site scripting.cross-user defacement.page hijacking.co ...

  6. 关于wordpress插件WP SMTP的邮箱设置

     花了两天的时间把邮箱设置好了,把大概的步骤写下,放一下查到的资料. 1.去域名服务商那里添加MX记录      如下图的MX      2.测试主机是否禁用了mail()函数      参考链接wo ...

  7. 秀尔算法:破解RSA加密的“不灭神话” --zz

    http://netsecurity.51cto.com/art/201508/488766.htm RSA加密曾被视为最可靠的加密算法,直到秀尔算法出现,打破了RSA的不灭神话. RSA加密 VS ...

  8. jquery文档

    http://jquery.cuishifeng.cn/selected_1.html

  9. NIO-1缓冲区(Buffer)

    import java.nio.ByteBuffer; import org.junit.Test; /* * 一.缓冲区(Buffer):在 Java NIO 中负责数据的存取.缓冲区就是数组.用于 ...

  10. 反片语(UVa156)

    题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=835&a ...