数组是一个有序的集合,OC中的数组只能存储对象类型,对于对象的类型是没有限制的
NSArray:不可变数组 :对象创建好以后,数组中的元素个数不能发生变化
NSSMutableArray : 可变数组 : 对象创建好以后,数组中的元素可以灵活进行增删改操作
NSArray *names = [[NSArray alloc] initWithObjects:@"frank", @123, @"monkey", nil];
注意 : nil作为数组存放元素的结束标志,多个元素通过逗号间隔。
NSArray 常用的方法
1. > 元素个数
@property (readonly)NSUInteger count;
2. > 获取数组中指定下标对应的元素
- (id)objectAtIndex:(NSUInteger)index;
3. > 用来判断数组中是否包含某个给定的对象
- (BOOL)containObject:(id)anObject;
4.>获取数组元素对应的索引
- (NSUInteger)indexOfObject:(id)anObject;
5. > 按照给定的字符串进行截取,将截取的多段字符串放入数组中
- (NSArray *)componentsSeparatedByString:(NSString *)separator;
6. > 将数组中的元素按照给定的字符串格式拼接成一个完整的字符串对象
- (NSString *)componentsJoinedByString:(NSString *)separator;
//可变数组 NSMutableArray
1. > 数组中添加一个对象
- (void)addObject:(id)object;
2. >数组中指定位置插入一个对象
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
3. > 数组中移除一个对象
- (void)removeObject:(id)object;
4. > 移除数组中最后一个对象
- (void)removeLastObject;
5. > 移除数组中所有的元素
- (void)removeAllObjects;
6. >数组中移除指定位置的元素
- (void)removeObjectAtIndex:(NSUInteger)index;
7. > 使用指定的对象替换指定位置的对象
- (void)reolaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
8.> 交换指定的两个下标对应的对象
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)inx2;
// 字典 : 字典是一个无序的集合,用来存储具有一一对应关系的数据.
字典中存储的每一个对象都是一个键值对,键值对包含两个部分key 和 value, key 与 value 的值都是对象类型.
对于每一对 key-value称为一个条目(Entry).
与数组不同,字典靠key存取元素
key与value必须都是对象类型
字典中键值对的存储是无序的
字典分为两种类型不可变字典(NSDictionary),看外边字典(NSMutableDictionary).
1. > 获取字典中键值对的个数
@property (readonly)NSUInteger count;
2. > 获取字典中所有的键
@property (readonly, copy) NSArray *allKeys;
3. > 获取字典中所有的值
@property (readonly, copy) NSArray *allValues;
4. > 根据键获得对应的值
- (id)objectForKey:(NSString *)anAttribute;
5. > 字典中添加新的键值对以及修改某一个键值对
- (void)setObject:(id)anObject forKey:(id<NSCopying>)aKey;
6. > 移除指定的键对应的键值对
- (void)removeObjectForKey:(id)aKey;
7.> 移除字典中所有的键值对
- (void)removeAllObjects;
集合 : 集合在开发过程中使用的范围并没有数组和字典频繁。OC中的集合分为不可变集合(NSSet)和可变集合(NSMutableSet)两种
集合的特性:
互异性 集合中不能够存在两个相同的对象
无序性 集合中的对象没有顺序,先添加的对象不一定在集合中的第一个位置,后添加的也不一定在最后一个位置
集合经常用来处理重用问题
初始化方法
NSSet *name = [[NSSet alloc] initWithObjects:@"frank", @"duck", @"monkey", nil];
注意 : 不可变集合一旦创建,集合中的对象无法修改,只能从集合中读取对象,并且没有快速创建集合对象的字面量。
1. > 获取集合中对象的个数
@property (readonly) NSUInteger count;
2. > 获取集合中所有的对象
@property (readonly, copy) NSArray *allObjects;
3. > 从集合中取出一个对象
- (id)anyObject;
4. > 判断集合中是否包含某一个给定的对象
- (BOOL)containObject:(id)anObject;
NSMutableSet (可变集合)的父类是NSSet, 具有NSSet所有的方法,同时在其基础上又增加了"添加" 和 "删除" 对象的操作。
1. > 添加一个对象
- (void)addObject:(id)object;
2. > 移除一个对象
- (void)removObject:(id)boject;
3. > 移除所有对象
- (void)removeAllObjects;
OC中的三大容器: 数组、字典、集合,三个容器总存储的都是对象类型
数组:是一个有序的集合,当我们需要管理有序的一组对象的时候需要使用数组
字典:是一个无序集合,里面存储的对象是一个一个的键值对,我们获取数据的时候需要使用对应的key来操作
集合集合是一个无序的容器,并且容器中的对象不能够重复
可变容器类对象是不可变容器类对象的子类,在拥有父类功能基础上,扩充了对原有对象的增删改操作