Dawninest

Objective-C | 集合类

集合类

集合类特点:

  • 所有的集合都是对象

  • 集合中所有的元素都是对象而且只能是对象

  • 简单数据类型用NSNumber封装成对象,复杂数据类型用NSValue封装

  • 集合中不能存放nil对象,nil是作为集合结束的标志符

  • OC集合没有多维的概念,不会出现根本意义上的二维数组

  • 集合的所有运算依赖于方法

数组NSArray

c语言数据类型(int,float,double,BOOL)要封装成NSNumber类型后,才能存在集合中

NSArray 不可变数组

  1. 初始化
1
2
3
4
5
6
[[NSArray alloc]initWithObject:@“1”,@“2”,@“3”,nil]	
[[NSArray alloc]initWithArray:array1];
[NSArray arrayWithObject:@“1”,@“2”,@“3”,nil]
[NSArray arrayWithArray:array1];
简化操作:NSArray = @[@“1”,@“2”,@“3”];
标记static的数组,不能使用简写赋值
  1. 获取数组元素个数
1
2
[array count];		
array.count
  1. 添加元素
1
2
[array arrayByAddingObject:@“4”];	
[array arrayByAddingObjectFromArray:array1];
  1. 查找元素
1
2
NSInteger index = [array indexObject:@“3”];	
index == NSNotFound;
  1. 获取元素
1
2
3
4
5
6
7
8
9
//存入的是什么类型,取出就用什么类型接受	
array[0];
[array objectAtIndex:0];
//获取第一个元素
[array firstObject];
//获取最后一个元素
[array lastObject];
//获取部分元素
NSArray *getArray = [array subarrayWithRange”NSMakeRange(0,2)];
  1. 排序

  2. 快速枚举

1
2
3
for(id obj in newArray){ 	
NSLog(@“obj = %@”,obj);
}

NSMutableArray 可变数组

  1. 初始化

基本同上,不能直接使用简化方法,

1
2
NSMutableArray *array = [@[@“1”,@“2”]mutableCopy];
额外一种, [NSMutableArray arrayWithCapacticy:20]; 分配容量
1
[mutableArray addObject:@“0”];	
1
[mutableArray removeObject:@“2”];	
1
[mutableArray indexOfObject:@“0”];	查出在数组中的位置
1
[mutableArray replaceObjectAtIndex:2 withObject:@“0”];	改数组中对应位置的元素	
  1. 排序

字典NSDictionay

关键字及其定义的集合,字典也被称为 散列表或关联数组

  • NSDictionay | value - key

1.初始化

一般初始化:NSDictionary *dictionary = [[NSDictionary alloc]initWithObjectsAndKeys:@“one”,@“1”,@“two”,@“2”,nil];

便利初始化: NSDictionary *dictionary = [NSDictionary dictionaryWithObjectAndKeys:@“one”,@“1”,@“two”,@“2”,nil];

快速初始化: NSDictionary *dictionary = @[@“1”:@“one”,@“2”:@“two”];

2.查询 [dictionary objectForKey:@“2”]; dictionary[@“2”];

3.取出所有key NSArray *key = [dictionary allKeys];

4.取出所有对象 NSArray *objects = [dictionary allValue];

  • NSMutableDictionay
  1. 初始化-基本同上

1
[mutableDictionary setObject:@“six” forKey:@“6”];	
1
[mutableDictionary removeObjectForKey:@“6”];	
1
[mutableDictionary objectForKey:@“4”];
  1. 改(根据Key值覆盖之前的数据)
1
[mutableDictionary setObject:@“sunny” forKey:@“4”];
  1. 遍历
1
2
3
for(id key in mutableDictionary) {	
NSLog(@“%@”,[mutableDictionary objectForKey:Key])
}
  • NSSet

里面的对象不能存放重复的对象,主要用于去除重复数,可用来清除其它集合中的重复对象

1
2
3
4
5
去除重复数	
NSArray *array = @[@“1”,@“1”,@“2”,@“3”,@“3”,@“4”];
NSSet *set = [NSSet setWithArray:array];
NSArray *arraySet = [set allObject];
得到的 arraySet 就是去除重复元素之后的数组