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. spring-mybatis.xml配置

    1.自动扫描 <context:component-scan base-package="com.javen" /> 2.引入配置文件 <bean id=&quo ...

  2. MySQL 作业题及答案

    MySQL 测试题 一. 表关系: 请创建如下表,并创建相关约束 创建表sql如下: /* Navicat MySQL Data Transfer Source Server : 192.168.11 ...

  3. js + -操作符

    js + 举例说明最有效了... "11"+1='111' "11"+'1'="111" 11+1=12 大概的感觉就是+操作符会优先输入S ...

  4. 使用coding云作为git远程库

    1.在命令行中创建GIT仓库 mkdir DriveAssistant cd DriveAssistant git init echo "# DriveAssistant" > ...

  5. CSU 1424 Qz’s Maximum All One Square

    原题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1424 逐渐找到做这种题的感觉了. 二分法.g[i][j]存储坐标(i, j)的值,s[i ...

  6. 纯js的N级联动列表框 —— 基于jQuery

    多个列表框联动,不算是啥大问题,但是却挺麻烦,那么怎么才能够尽量方便一点呢?网上搜了一下,没发现太好用的,于是就自己写了一个.基于jQuery,无限级联动,支持下拉列表框和列表框. 先说一下步骤和使用 ...

  7. office 文档转pdf

    本地先安装 金山wps,并确保可用 工程目录 1.使用前,先执行install.bat 安装jacob 到maven本地仓库 2.复制 jacob-1.18-M2-x64.dlljacob-1.18- ...

  8. JS(vue iview)分页解决方案

    JS(vue iview)分页解决方案 一.解决思路 使用分页组件 使用组件API使组件自动生成页面数量 调用组件on-change事件的返回值page 将交互获得的数组存在一个数组list中 通过p ...

  9. python脚本传入参数--精讲(getopt模块)

    1.最常用的sys.argv[],这个不多谈 2.形如 dahu@dahu-OptiPlex-:~/json_folder$ python sub1.py -abb -oaaa --output=ou ...

  10. ubuntu 依赖问题

    ubuntu想装个QQ,无奈安装不但出错,还导致现在的软件依赖出了问题 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 您也许需要运行“apt --fix-b ...