本文主要讲解的是不可变数组NSArray可变数组NSMutableArray集合NSSet可变集合NSMutableSet详细使用方式包括类型和值之间的转换
文章是博主原创,转载请标明出处http://blog.csdn.net/werctzzz/article/details/70928738
首先来一个集合的详细方法~
#pragma mark NSSet 不可变集合 // NSSet和NSArray有相似之处,都是存储不同的对象的地址 // 但是NSArray是有序的集合,NSSet是无序的集合。 // 在介绍完了NSSet就讲讲数组~ // 基本知识:集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。 // 1.集合的初始化 NSSet * set = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil]; NSLog(@"%ld",[set count]); //集合中对象的个数 // 2.集合的判断 // 2.1判断集合中是否拥有@“two” BOOL boolset1 = [set containsObject:@"two"]; // 2.2判断两个集合是否相等 NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil]; BOOL boolset2 = [set isEqualToSet:set2]; //判断set是否是set3的子集合 NSSet * set3 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five", nil]; BOOL boolset3 = [set isSubsetOfSet:set3]; // 3.通过数组来初始化集合 // 3.1数组转换为集合 NSArray * changeArray1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil]; NSSet * changeSet = [[NSSet alloc] initWithArray:changeArray1]; // 3.2集合转换为数组 NSArray * changeArray2 = [changeSet allObjects]; #pragma mark NSMutableSet 可变集合 // 1.可变集合初始化 NSMutableSet * MutableSet = [[NSMutableSet alloc] init]; // 2.内部元素的操作 // 2.1增加元素 [MutableSet addObject:@"one"]; [MutableSet addObject:@"two"]; [MutableSet addObject:@"two"]; // 2.2删除元素 [MutableSet removeObject:@"two"]; [MutableSet removeAllObjects]; // 3.集合的互相添加 // 3.1将一个不可变集合中的元素添加到可变集合中来,如果有重复,只保留一个 NSSet * addSet = [[NSSet alloc] initWithObjects:@"two",@"three",@"four", nil]; [MutableSet unionSet:addSet]; // 3.2删除set中与set2相同的元素 [MutableSet minusSet:addSet]; // 4.指数集合(索引集合)NSIndexSet NSIndexSet * indexSet1 = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 3)]; //集合中的数字是123 // 5.根据集合提取数组中指定位置的元素 NSArray * arrayout1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil]; NSArray * newArray1 = [arrayout1 objectsAtIndexes:indexSet1]; //返回@"two",@"three",@"four" // 6.可变指数集合NSMutableIndexSet NSMutableIndexSet * indexSet2 = [[NSMutableIndexSet alloc] init]; [indexSet2 addIndex:0]; [indexSet2 addIndex:3]; [indexSet2 addIndex:5]; // 7.通过集合获取数组中指定的元素 NSArray * arrayout2 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six", nil]; NSArray * newArray2 = [arrayout2 objectsAtIndexes:indexSet2]; //返回@"one",@"four",@"six"
接下来就是数组的详细使用方式~
#pragma mark NSArray 不可变数组 NSString *str1 = @"1"; NSString *str2 = @"2"; NSString *str3 = @"3"; //NSArray 常用方法 // 1. 创建对象,初始化 NSArray *arry1 = [[NSArray alloc]initWithObjects:str1,str2,str3, nil]; NSLog(@"%@", arry1); /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ // 2. 获取数组中的对象 根据数据在数组的位置 index NSString *obj = arry1[2]; // 注意类型要正确,不然会发生崩溃,如果类型不一致可以先转换 NSLog(@"%@", obj);//1 NSLog(@"%@", arry1[2]);//2 NSLog(@"%@", [arry1 objectAtIndex:1]);//3 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ // 3. 获取数组长度(元素个数) NSLog(@"%ld", [arry1 count]); /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ // 4.查询某个对象的下标 NSArray *arry2 = [NSArray arrayWithObjects:@"赵",@"张",@"靳",@"张",@"宋",nil]; NSLog(@"%ld", [arry2 indexOfObject: @"靳"]); /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ #pragma mark NSMutableArray 可变数组 // 1.初始化创建 NSMutableArray *array = [NSMutableArray arrayWithObjects:@"张三",@"李四",@"王五",@"孙二",@"赵六",@"周七", nil]; for (int i = 0; i < [array count]; i++){ NSLog(@"%d%@", i, [array objectAtIndex:i]); } // ⭐️初始化需要注意的地方 // ①[NSMutableArray arrayWithCapacity:6] // 初始化可变数组对象的长度,如果后面代码继续添加数组超过长度6以后NSMutableArray的长度会自动扩充,6是自己可以设置的颗粒度。 // ②[array addObject:...] // 向可变数组尾部添加数据对象。 // ③[array addObjectsFromArray:..] // 向可变数组尾部添加一个数组对象。 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ // 2.对数组内容的操作 // 2.1添加元素 [array addObject:@"钱八"]; //添加一个 @"钱八"进去array里面 for (int i = 0; i < [array count]; i++){ NSLog(@"%d%@", i, [array objectAtIndex:i]); }//钱八添加到array里面,在最后一个位置 // 2.2插入元素 [array insertObject:@"陈一" atIndex:2]; for (int i = 0; i < [array count]; i++){ NSLog(@"%d%@", i, [array objectAtIndex:i]); }//把 陈一 插入到指定下标位置,下标为2 // 2.3删除元素 [array removeObject:@"孙二"];//把 孙二 从数组里删除 [array removeObjectAtIndex:5];//把下标为5的删除 // 重温一下上一篇博客学的 NSRange 设置一个范围为 0 到 3 之间。 NSRange range = NSMakeRange(0,3); [array removeObject:@"李四" inRange:range];//按范围删除 // ⭐️删除操作时候要注意的地方 // ①[array removeObject:(id)] 删除数组中指定元素,根据对象isEqual消息判断。 // ②[array removeObjectAtIndex:(NSUInteger)] 删除数组中指定脚标索引的数据。 // ③[array removeObjectsInArray:(NSArray *)] 删除一个数组的元素。 // ④[array removeObjectIdenticalTo:(id)] 删除数组中指定元素,根据对象的地址判断 // ⑤[array removeObjectIdenticalTo:(id) inRange:(NSRange)] 在指定范围内删除指定的元素。 // 遍历查看结果 for (int i = 0; i < [array count]; i++){ NSLog(@"%d%@", i, [array objectAtIndex:i]); } // 2.4替换元素 [array replaceObjectAtIndex:4 withObject:@"坑爹"];//给据下标把内容替换 for (int i = 0; i < [array count]; i++){ NSLog(@"%d%@", i, [array objectAtIndex:i]); } // 2.5交换指定位置元素 [array exchangeObjectAtIndex:2 withObjectAtIndex:4];//把二和四的下标元素替换 for (int i = 0; i < [array count]; i++){ NSLog(@"%d%@", i, [array objectAtIndex:i]); }
作者:werctzzz 发表于2017/4/28 18:12:14 原文链接
阅读:306 评论:0 查看评论