集合

来源:互联网 发布:数据采集平台 编辑:程序博客网 时间:2024/06/10 06:01

一、数组类
  数组:OC中的数组也有下标的概念,是有序的集合,只能存储对象类型,但是对于对象的类型没有限制。通过下标访问数组元素,下标从0开始。分为可变数组(NSArray)和不可变数组(NSMutableArray)。
  NSArray创建:

NSNumber *n = @(100);NSArray *array= [[NSArray alloc] initWithObjects:n, @2, @"3", @"4", @"5", nil];NSArray *array1 = [[NSArray alloc] initWithObjects:array, nil];//nil作为数组存放元素的结束标志,多个元素通过逗号间隔.//便利构造器NSArray *array2 = [NSArray arrayWithObjects:@"Windows", @"iOS", @"Android", @"Nokia", @"Sunsang", nil];//将一个数组中的所有对象拷贝到一个新的数组中.NSArray *newArray = [NSArray arrayWithArray:array];//字面量创建数组(不可变的)NSArray *arr = @[@"1", @"2", @"3"];

  获取数组内的元素个数:

NSUInteger count = [array count];

  获取对应下标下的对象:

id obj = [array objectAtIndex:1];

  判断数组中是否包含某一个给定的对象:

BOOL contains = [array containsObject:@"iOS"];

  给对象,返回对象所在的下标:

//如果给定的对象不存在于数组中,返回脏数据;如果给定的对象有多个存在于数组中,只返回下标最小的那个对象.NSUInteger index = [array indexOfObject:@"iOS"];

  按照给定字符串进行截取,将截取的多段字符串放入数组:

NSString *str = @"www.xxoo.com";NSArray *strArr = [str componentsSeparatedByString:@"."];

  将数组中的元素按照给定的字符串格式拼接成一个完整的字符串对象:

NSString *arrStr = [array componentsJoinedByString:@"&"];

  NSMutableArray创建:

//1.初始化方法NSMutableArray *mArr = [[NSMutableArray alloc] initWithCapacity:0];//2.便利构造器NSMutableArray *mArr1 = [NSMutableArray arrayWithCapacity:1];//3.字面量转换创建可变数组NSMutableArray *mArr2 =[@[] mutableCopy];

  获取数组元素个数:

NSUInteger count = [mArr count];

  向数组中添加元素:

[mArr addObject:@"aaaa"];NSArray *arr = @[@"1", @"2"];NSMutableArray *mArr1 = [@[@"1",@"2"] mutableCopy];[mArr1 addObject:arr];[mArr addObjectsFromArray:arr];

  向数组中指定位置插入一个元素:

[mArr insertObject:@"3" atIndex:1];

  替换元素:

[mArr replaceObjectsAtIndexes:1 withObjects:@"5"];

  删除元素:

 //如果没有对应要删除的对象,什么都不会发生.如果有,删除,如果有多个,都删除.[mArr removeObject:@"3"];//按下标删除[mArr removeObjectAtIndex:1];//移除最后一个对象[mArr removeLastObject];//移除所有元素[mArr removeAllObjects];

  交换对应下标的元素:

[mArr exchangeObjectAtIndex:0 withObjectAtIndex:1];

二、字典类
  字典:字典是一个无序的集合,用来存储具有一一对应关系的数据。
  字典中存储的每一个对象都是一对键值对,键值对包含两个部分key和value,key与value的值都是对象类型。字典中key是唯一的。
  字典分为两种类型:不可变字典(NSDictionary),可变字典(NSMutableDictionary)。
  NSDictionary的创建:

//初始化方法NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"张三", @"name", @"男", @"gender", @18, @"age", @20, @"age", nil];//#warning 如果在定义时有相同的key的键值对,此时,系统会保留第一次读取的键值对,忽略其余相同的键值对.//便利构造器NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"frank", @"name1", @"duck", @"name2", @"Siri", @"name3", nil];//语法糖NSDictionary *dic2 = @{@"name1":@"frank", @"name2":@"duck", @"name3":@"Siri"};

  键值对个数:

NSUInteger count = [dic count];

  获取所有的key:

NSArray *allKeys = [dic allKeys];

  获取所有的value:

NSArray *allValue = [dic allValues];

  通过key获取对应的value:

NSString *gender = [dic objectForKey:@"gender"];NSString *gender = dic[@"gender"];

  NSMutableDictionary的创建:

//初始化方法NSMutableDictionary *mDic1 = [[NSMutableDictionary alloc] initWithDictionary:0];//便利构造器NSMutableDictionary *mDic2 = [NSMutableDictionary dictionaryWithCapacity:1];//语法糖NSMutableDictionary *mDic3 = [@{} mutableCopy];

  添加以及修改键值对:

[mDic3 setObject:@"Apple" forKey:@"iOS"];

  移除指定的键值对:

[mDic3 removeObjectForKey:@"iOS"];

  移除所有键值对:

[mDic3 removeAllObjects];

三、集合类
  集合:容器类,分为不可变集合(NSSet)和可变集合(NSMutableSet)两种。
  特点:无序,互异性,使用频率远远小于数组和字典,但会经常用来处理重用问题。
  数组输出是小括号包裹内容,字典是大括号包裹内容,集合是大括号小括号包裹内容。
  NSSet的创建:

//初始化方法NSSet *set = [[NSSet alloc] initWithObjects:@"aa", @"bb", @"cc", @"dd", nil];//便利构造器NSSet *set1 = [NSSet setWithObjects:@"aa", @"bb", @"cc", @"dd", nil];//注意:不可变集合一旦创建,集合中的对象无法修改,只能从集合中读取对象,并且没有快速创建集合的字面量.

  得到集合中所有的对象:

NSArray *arr = set.allObjects;

  获取集合中任一对象:

id obj = [set anyObject];

  判断集合内是否含有某个对象:

BOOL isContains = [set containsObject:@"aa"];

  NSMutableSet的创建:

//初始化方法NSMutableSet *set2 = [[NSMutableSet alloc] initWithCapacity:1];//便利构造器NSMutableSet *set3 = [NSMutableSet setWithCapacity:1];

  添加一个对象:

[set2 addObject:@"aaa"];

  去除数组中重复的对象:

 NSArray *Arr = @[@"1", @"2", @"3", @"4", @"2", @"4"];[set2 addObjectsFromArray:Arr];NSArray *newArr = set2.allObjects;

  移除一个对象:

[set2 removeObject:@"1"];

  移除所有对象:

[set2 removeAllObjects];