人生在世 總是要不斷 創(chuàng)新 挑戰(zhàn) 突破 被淘汰算其次 活得刺激 有價(jià)值更加重要。
————嘆希奇

靜態(tài)有序集合(不可變數(shù)組)
#數(shù)組創(chuàng)建
NSArray *array = @[@"1",@"2",@"3",@"4",@"5"];
NSArray *array1 = [NSArray array];
NSArray *array2 = [[NSArray alloc]init];
NSArray *array3 = [[NSArray
alloc]initWithObjects:@"b",@"a",@"e",@"c",@"d",@"1",@"2",@"3",@"4",@"5", nil];
NSArray *array4 = [[NSArray alloc]initWithArray:array];
#數(shù)組取值
//根據(jù)索引取值
NSString *objest = [array objectAtIndex:0];
NSString *objest1 = array[0];//1
//取數(shù)組中的第一個(gè)對(duì)象
NSString *string3 = array.firstObject;//1
//取數(shù)組中的最后一個(gè)對(duì)象
NSString *string4 = array.lastObject;//5
#數(shù)組屬性
//長(zhǎng)度
NSInteger length = array.count;
//添加對(duì)象到數(shù)組尾部,返回一個(gè)新數(shù)組
NSArray *array5 = [array arrayByAddingObject:@"6"];//1,2,3,4,5,6
//添加一個(gè)數(shù)組到數(shù)組尾部,返回一個(gè)新數(shù)組
NSArray *array6 = [array arrayByAddingObjectsFromArray:array1];//1,2,3,4,5
//數(shù)組元素之間插入分隔符,返回一個(gè)字符串
NSString *string = [array componentsJoinedByString:@"-"];//1-2-3-4-5
//對(duì)象是否存在在數(shù)組中,返回一個(gè)BOOl值
BOOL isConain = [array containsObject:@"1"];//YES
//返回?cái)?shù)組內(nèi)容的字符串
NSString *string1 = array.description;//1,2,3,4,5
NSString *string1 = [array descriptionWithLocale:nil];//1,2,3,4,5
//返回接收數(shù)組中包含的第一個(gè)對(duì)象,該對(duì)象等于另一個(gè)給定數(shù)組中的對(duì)象。
NSString *string2 = [array firstObjectCommonWithArray:array3];//1
//返回其對(duì)應(yīng)的數(shù)組值等于給定對(duì)象的最低索引。
NSUInteger index = [array indexOfObject:@"1"];//0
//返回指定范圍內(nèi)的最低索引,其對(duì)應(yīng)的數(shù)組值等于給定對(duì)象
NSUInteger index1 = [array indexOfObject:@"1" inRange:NSMakeRange(0, array.count)];//0
//返回最低索引,其對(duì)應(yīng)的數(shù)組值與給定對(duì)象相同。
NSInteger index2 = [array indexOfObjectIdenticalTo:@"1"];//0
//返回指定范圍內(nèi)的最低索引,其對(duì)應(yīng)的數(shù)組值等于給定對(duì)象
NSInteger index3 = [array indexOfObjectIdenticalTo:@"1" inRange:NSMakeRange(0, array.count)];//0
//判斷兩數(shù)組是否相同,返回一個(gè)BOOL值
BOOL isEqual = [array isEqualToArray:array1];//NO
#數(shù)組遍歷
//正向遍歷數(shù)組
NSEnumerator *enumerator = [array objectEnumerator];
NSString *objs;
while (objs = [enumerator nextObject]) {
NSLog(@"數(shù)組正序值開始打?。?@\n",objs);
}
//反向遍歷數(shù)組
NSEnumerator *reverseEnumerator = [array reverseObjectEnumerator];
NSString *reobjs;
while (reobjs = [reverseEnumerator nextObject]) {
NSLog(@"數(shù)組倒序值開始打?。?@\n", reobjs);
}
#數(shù)組排序
//排序方法
NSInteger alphabeticSort(id string1, id string2, void *reverse)
{
if (*(BOOL *)reverse == YES) {
return [string2 localizedCaseInsensitiveCompare:string1];
}
return [string1 localizedCaseInsensitiveCompare:string2];
}
NSData *data = [array3 sortedArrayHint];
BOOL reverseSort = NO;
NSArray *sortArr = [array3 sortedArrayUsingFunction:alphabeticSort context:&reverseSort];//12345abcde
NSArray *sortArr = [array3 sortedArrayUsingFunction:alphabeticSort context:&reverseSort hint:data];//12345abcde
//自定義排序方法
NSArray *sortAr1 = [array3 sortedArrayUsingSelector:@selector(compare:)];//12345abcde
//排序
NSArray *sortArr1 = [array3 sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
return [obj1 compare:obj2];
}];//12345abcde
//排序
/*
SSortOptions:
NSSortConcurrent 高效的但不穩(wěn)定的排序算法
NSSortStable 穩(wěn)定的排序算法
*/
NSArray *sortArr2 = [array3 sortedArrayWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
return [obj1 compare:obj2];
}];//12345abcde
#數(shù)組遍歷
//普通遍歷
for (NSInteger i = 0; i < array.count; i++) {
NSString *str = array[i];
}
//快速遍歷
for (NSString *str in array) {
NSLog(@"%@", str);
}
//枚舉遍歷
[array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@",obj);
}];
/*
NSEnumerationOptions
NSEnumerationConcurrent //無(wú)序遍歷
NSEnumerationReverse //倒序遍歷
*/
//根據(jù)遍歷選項(xiàng)遍歷
[array enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@",obj);
}];
//根據(jù)索引和遍歷選項(xiàng)遍歷數(shù)組
NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0,2)];
[array enumerateObjectsAtIndexes:set options:NSEnumerationConcurrent usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@",obj);
}];
NSMutableArray
可變數(shù)組,繼承自NSArray
#可變數(shù)組創(chuàng)建
NSArray *array = @[@"1",@"2",@"3",@"4",@"5"];//1,2,3,4,5
NSMutableArray *mulArr = [[NSMutableArray alloc]initWithObjects:@"1",@"2", nil];////1,2
NSMutableArray *mulArray = [[NSMutableArray alloc]initWithArray:array];//1,2,3,4,5
#插入元素
//在數(shù)組末尾插入給定對(duì)象
[mulArr addObject:@"q"];//1,2,q
//在數(shù)組末尾插入給定數(shù)組的元素
[mulArr addObjectsFromArray:array];//1,2,q,1,2,3,4,5
//在數(shù)組中插入元素到指定索引位置
[mulArr insertObject:@"Q" atIndex:0];//Q,1,2,q,1,2,3,4,5
//在數(shù)組中插入數(shù)組元素到指定索引位置
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, array.count)];
[mulArr insertObjects:array atIndexes: indexSet];//1,2,3,4,5,Q,1,2,q,1,2,3,4,5
#刪除元素
//刪除數(shù)組中具有最高值索引的元素(最后一個(gè)元素)
[mulArr removeLastObject];//1,2,3,4,5,Q,1,2,q,1,2,3,4
//刪除指定下標(biāo)的元素
[mulArr removeObjectAtIndex:0];//2,3,4,5,Q,1,2,q,1,2,3,4
//刪除給定數(shù)組中的元素
[mulArr removeObjectsInArray:array];//Q,q
//刪除指定范圍內(nèi)的所有匹配的元素
[mulArray removeObject:@"1" inRange:NSMakeRange(0, 3)];//,2,3,4,5
//刪除數(shù)組中所有匹配的元素
[mulArray removeObject:@"2"];//3,4,5
//刪除數(shù)組中所有出現(xiàn)的給定對(duì)象。
[mulArray removeObjectIdenticalTo:@"q"];//3,4,5
//刪除數(shù)組中指定范圍內(nèi)的所有匹配元素
[mulArray removeObjectIdenticalTo:@"5" inRange:NSMakeRange(0, mulArray.count)];//3,4
////刪除數(shù)組中指定范圍內(nèi)的元素
[mulArray removeObjectsInRange:NSMakeRange(0, 1)];//4
NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)];//nil
//從數(shù)組中刪除指定索引處的對(duì)象
[mulArray removeObjectsAtIndexes:set];//nil
//刪除數(shù)組中所有的元素
[mulArray removeAllObjects];
#replace
//替換元素
[mulArray setArray:array];//1,2,3,4,5
//替換數(shù)組中指定索引處的元素
[mulArray replaceObjectAtIndex:0 withObject:@"Q"];//Q,2,3,4,5
//將給定范圍指定的接收數(shù)組中的對(duì)象替換為給定數(shù)組中的所有對(duì)象
[mulArray replaceObjectsInRange:NSMakeRange(0, mulArray.count-1) withObjectsFromArray:array];//1,2,3,4,5,5
//將由一個(gè)給定范圍指定的接收數(shù)組中的對(duì)象替換為另一個(gè)范圍指定的另一個(gè)數(shù)組中的對(duì)象。
[mulArray replaceObjectsInRange:NSMakeRange(0, mulArray.count-1) withObjectsFromArray:array range:NSMakeRange(0, array.count-1)];//1,2,3,4,5
//將接收數(shù)組中的對(duì)象替換為使用給定數(shù)組中的對(duì)象指定的位置。
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, array.count)];
[mulArray replaceObjectsAtIndexes: indexSet withObjects:array];//1,2,3,4,5
//將接收數(shù)組的元素設(shè)置為另一個(gè)給定數(shù)組中的元素
[mulArray setArray:array];//1,2,3,4,5
//用新對(duì)象替換索引處的對(duì)象,可能添加對(duì)象
[mulArray setObject:@"1" atIndexedSubscript:0];//1,2,3,4,5
#exchange index
//交換數(shù)組中指定索引位置的元素
[mulArray setArray:array];//1,2,3,4,5
[mulArray exchangeObjectAtIndex:0 withObjectAtIndex:mulArray.count];//5,2,3,4,1
#排序
[mulArr sortUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
return [obj1 compare:obj2];
}];
/*
SSortOptions:
NSSortConcurrent 高效的但不穩(wěn)定的排序算法
NSSortStable 穩(wěn)定的排序算法
*/
[mulArr sortWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
return [obj1 compare:obj2];
}];