Object-C—集合

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—集合,布布扣,bubuko.com

时间: 2024-10-19 07:50:08

Object-C—集合的相关文章

java集合之Collection架构

Java集合之Collection架构 首先,我们对Collection进行说明.下面先看看Collection的一些框架类的关系图: Collection是一个接口,它主要的两个分支是:List 和 Set.List和Set都是接口,它们继承于Collection.List是有序的队列,List中可以有重复的元素:而Set是数学概念中的集合,Set中没有重复元素!List和Set都有它们各自的实现类. 如ArrayList  LinkedList  Vector  Stack 为了方便,我们抽

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

转自:http://zzy603.iteye.com/blog/973649 写的挺好,用于记录,把对象分成概念的Object(var f={})和 类的Object(function F(){}) ------------------------------------- 前言 首先,要说明的我是一个计算机爱好者,但我并不是科班出身,也没有受过专业的培训,所以,有些专业名词可能用的不当或者看法偏激乃至错误,敬请谅解并给予斧正为盼. 一.Object是什么? 刚开始我简单地认为Object是js

day19 集合MAp

Day 19 Map 一,虽然在Collection的下边,但是他在API里边确是单独的一个类; 二,Map 在存储的时候和collection 不一样: Collection只能存储一个对象(也称为单列集合); Map 是键值映射的,一一对应.(也称为双列集合); 三,map 接口中的方法: 常用的: 1,put (K,V)  将键值对存储到集合;  如果存储重复键,原来的键会被覆盖. 2,get(K)  传递键,返回这个键所对应的值(区分大小写);如果没有返回null 3,接口判断方法   

黑马程序员_集合

集合1.集合和对象数组的区别: 数组的长度不可变,集合的可变: 数组可以存储基本数据类型和对象,集合只能存储对象. 集合的框架图 集合派系的顶层接口Collection1.Collection集合存储对象的方法: add(E e)将元素存储到集合中 addAll(Collection c)将一个集合添加到另外的集合中2.Collection集合提取对象的方法: 通过迭代器iterator中的方法:hasNext()和next()来取出 Iterator it=new iterator(); wh

Java 集合系列 02 Collection架构

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 首先,我们对Collection进行说明.下面先看看Collection的一些框架类的关系图: Collection是一个接口,它主要的两个分支是:List 和 Set. List和Set都是接口,它们继承于Collection.L

集合框架学习笔记

集合框架由来 Java2之前,Java是没有完整的集合框架的.它只有一些简单的可以自扩容的容器类,比如 Vector,Stack,Hashtable等 为什么存在容器(可以存储多个数据) 数组的弊端: 1,长度是不可变的,一旦数组初始化之后,长度是固定的 2,在N个地方需要存储多个数据,都得专门写数组的操作方法,代码和功能重复 3,数组定义方法参差不齐集合框架:是为表示和操作集合而规定的一种统一的标准的体系结构.任何集合框架都包含三大块内容:对外的接口,接口的实现和对集合运算的算法为什么需要集合

迭代器、foreach循环、泛型集合

集合的迭代 语法:Iterator<Object> it=集合.iterator(); while(it.hasNext()){ Object obj=it.next(); } is.hasNext(); //判断是否有下一个元素 it.next(); //移动指针,返回指针指向元素 注意:集合在遍历的过程中不能进行修改,如果进行了修改操作,那么就会抛出ConcurrentModificationException异常, 如果需要进行删除,使用迭代器的it.remove()方法 foreach

Java集合框架--List、Set、Map

Java集合框架接口和类的层次结构: java.util.Collection [I] +--java.util.List [I] +--java.util.ArrayList [C] +--java.util.LinkedList [C] +--java.util.Vector [C] +--java.util.Stack [C] +--java.util.Set [I] +--java.util.HashSet [C] +--java.util.SortedSet [I] +--java.u

集合API

Java集合框架 集合的概念 集合,也称为容器,是一种工具类,它可以将一系列具有共同特性的元素组合成一个单元,用于存储,提取,管理.JDK提供的集合API都包含在java.util包内. Java集合框架主要分为两大部分,一部分实现了collection接口,该接口定义了存取一组对象的方法,其主要子接口为:Set和List,另外一部分是Mapjko,该接口定义了存储一组"键(key)值(value)"映射对的方法. 集合框架体系结构 开发过程中由于需求的不同,Java集合提供了不同的集

Java(18) 集合框架

一.集合框架 Collectoin                   Map List           set              HashMap ArrayList LinkedList  HashSet 1.1 List的方法 List<元素> list = new ArrayList<元素类型>() list.add(元素);//增加元素 list.add(元素);//向指定位置插入元素 list.remove(元素);//删除指定小标的元素 list.remov