
閑話少說,先上Demo
Github地址:https://github.com/Jerryisme/ArrayUsage
NSArray官方API文檔
NSMutableArray官方API文檔
常用方法
不可變數(shù)組
- (void)setUpNSArray {
// 創(chuàng)建空數(shù)組(基本沒用過)
NSArray *arr0 = [[NSArray alloc] init];
NSLog(@"創(chuàng)建空數(shù)組--- %@\n", arr0);
// 類方法創(chuàng)建空數(shù)組(常用)
NSArray *arr1 = [NSArray array];
NSLog(@"類方法創(chuàng)建空數(shù)組--- %@\n", arr1);
// 對象方法創(chuàng)建數(shù)組,以nil結束
NSArray *arr2 = [[NSArray alloc] initWithObjects:@"I", @"Love", @"U", nil];
NSLog(@"對象方法創(chuàng)建數(shù)組,以nil結束--- %@\n", arr2);
// 用已有數(shù)組創(chuàng)建新數(shù)組
NSArray *arr3 = [[NSArray alloc] initWithArray:arr2];
NSLog(@"用已有數(shù)組創(chuàng)建新數(shù)組--- %@\n", arr3);
// 通過類方法創(chuàng)建數(shù)組
NSArray *arr4 = [NSArray arrayWithArray:arr3];
NSLog(@"通過類方法創(chuàng)建數(shù)組--- %@\n", arr4);
// 數(shù)組中有多少個元素
NSLog(@"數(shù)組中有多少個元素--- %ld\n", arr2.count);
#pragma mark - 不可變數(shù)組方法
// 取一個元素
NSString *str0 = [arr2 objectAtIndex:1];
NSLog(@"取一個元素--- %@\n", str0);
// 取一個元素(簡寫)
NSString *str1 = arr2[0];
NSLog(@"取一個元素(簡寫)--- %@\n", str1);
// 取第一個元素
NSString *str2 = [arr2 firstObject];
NSLog(@"取第一個元素--- %@\n", str2);
// 取最后一個元素
NSString *str3 = [arr2 lastObject];
NSLog(@"取最后一個元素--- %@\n", str3);
// 截取多個元素
// NSIndexSet:索引集合,與數(shù)組類似,無序
NSIndexSet *set = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 2)];
NSArray *arr5 = [arr2 objectsAtIndexes:set];
NSLog(@"截取多個元素--- %@\n", arr5);
// 截取多個元素()
NSArray *arr6 = [arr2 subarrayWithRange:NSMakeRange(1, 2)];
NSLog(@"截取多個元素()--- %@\n", arr6);
}
可變數(shù)組
#pragma mark - 可變數(shù)組
- (void)setUpNSMutableArray {
NSMutableArray *mutableArr0 = [NSMutableArray array];
NSLog(@"mutableArr0--- %@\n", mutableArr0);
NSMutableArray *mutableArr1 = [NSMutableArray arrayWithObjects:@"I", @"Love", @"U", nil];
NSLog(@"mutableArr1--- %@\n", mutableArr1);
NSMutableArray *mutableArr2 = [[NSMutableArray alloc] initWithArray:@[@"I", @"Like", @"U"]];
NSLog(@"mutableArr2--- %@\n", mutableArr2);
NSMutableArray *mutableArr3 = [NSMutableArray arrayWithArray:mutableArr1];
NSLog(@"mutableArr3--- %@\n", mutableArr3);
// 初始化可變數(shù)組對象的長度,如果后面代碼繼續(xù)添加數(shù)組超過長度以后長度會自動擴充
NSMutableArray *mutableArr4 = [NSMutableArray arrayWithCapacity:100];
NSLog(@"mutableArr4--- %@\n", mutableArr4);
// 需要自己release
NSMutableArray *mutableArr5 = [[NSMutableArray alloc] initWithCapacity:100];
NSLog(@"mutableArr5--- %@\n", mutableArr5);
#pragma mark - 增刪改
// 添加單個元素
[mutableArr1 addObject:@"Forver"];
NSLog(@"添加單個元素mutableArr1--- %@\n", mutableArr1);
// 指定下標添加元素
[mutableArr1 insertObject:@"TT" atIndex:0];
NSLog(@"指定下標添加元素mutableArr1--- %@\n", mutableArr1);
// 添加其他數(shù)組元素
[mutableArr1 addObjectsFromArray:@[@"!", @"Do you Love me"]];
NSLog(@"添加其他數(shù)組元素mutableArr1--- %@\n", mutableArr1);
// 替換數(shù)組中的元素
[mutableArr1 replaceObjectAtIndex:0 withObject:@"TWY"];
NSLog(@"替換數(shù)組中的元素mutableArr1--- %@\n", mutableArr1);
// 替換數(shù)組中某個范圍(索引集合)的元素
[mutableArr1 replaceObjectsAtIndexes:[[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(5, 2)] withObjects:@[@"Do you", @"love me"]];
NSLog(@"替換數(shù)組中某個范圍(索引集合)的元素mutableArr1--- %@\n", mutableArr1);
// 取其他數(shù)組中的元素到當前數(shù)組(數(shù)組元素和替換元素個數(shù)必須相等)
[mutableArr1 replaceObjectsInRange:NSMakeRange(5, 2) withObjectsFromArray:@[@"Can you", @"love me ?"]];
NSLog(@"取其他數(shù)組中的元素到當前數(shù)組(數(shù)組元素和替換元素個數(shù)必須相等)mutableArr1--- %@\n", mutableArr1);
// 取其他數(shù)組中的部分元素到當前數(shù)組(取出元素和替換元素個數(shù)必須相等)
[mutableArr1 replaceObjectsInRange:NSMakeRange(5, 2) withObjectsFromArray:@[@"aa", @"aaa", @"Do you", @"love me ?", @"en heng"] range:NSMakeRange(2, 2)];
NSLog(@"取其他數(shù)組中的部分元素到當前數(shù)組(取出元素和替換元素個數(shù)必須相等)mutableArr1--- %@\n", mutableArr1);
// 交換數(shù)組中元素位置
[mutableArr1 exchangeObjectAtIndex:0 withObjectAtIndex:4];
NSLog(@"交換數(shù)組中元素位置mutableArr1--- %@\n", mutableArr1);
// 刪除某個元素(數(shù)組中含有多個相同元素,會全部刪除)
[mutableArr1 removeObject:@"Love"];
NSLog(@"刪除某個元素(數(shù)組中含有多個相同元素,會全部刪除)mutableArr1--- %@\n", mutableArr1);
// 刪除最后一個元素
[mutableArr1 removeLastObject];
NSLog(@"刪除最后一個元素mutableArr1--- %@\n", mutableArr1);
// 刪除指定下標元素
[mutableArr1 removeObjectAtIndex:0];
NSLog(@"刪除某下標元素mutableArr1--- %@\n", mutableArr1);
// 刪除范圍元素
[mutableArr1 removeObjectsAtIndexes:[[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 2)]];
NSLog(@"刪除范圍元素mutableArr1--- %@\n", mutableArr1);
// 全部刪除
[mutableArr1 removeAllObjects];
NSLog(@"全部刪除mutableArr1--- %@\n", mutableArr1);
#pragma mark - 倒序
NSMutableArray *temp = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
temp = (NSMutableArray *)[[temp reverseObjectEnumerator] allObjects];
NSLog(@"倒序--- %@\n", temp);
#pragma mark - 升序/降序(https://my.oschina.net/pengloo53/blog/173810)
//通過自帶的compare方法升序排列
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"377", @"27", @"1", @"4777", nil];
[array sortUsingSelector:@selector(compare:)];
NSLog(@"升序--- %@\n", array);
//通過倒序的方法進行降序排列
NSEnumerator *enumerator = [array reverseObjectEnumerator];
array = [[NSMutableArray alloc] initWithArray:[enumerator allObjects]];
NSLog(@"降序--- %@\n", array);
#pragma mark - for in 遍歷數(shù)組
//for in 遍歷數(shù)組 數(shù)組中使用時,in的前面是數(shù)組中的元素,in后面是要遍歷的集合
for (NSString *str in array) {
NSLog(@"遍歷數(shù)組--- %@\n", str);
}
// 分隔字符串成數(shù)組
[self componentsString];
// 數(shù)組拼接成字符串
[self arrayToString];
}
#pragma mark - 分隔字符串成數(shù)組
- (void)componentsString {
NSString *str = @"Hello World and I Love You";
// 以空格分隔字符串成數(shù)組
NSArray *arr = [str componentsSeparatedByString:@" "];
NSLog(@"arr--- %@,arr.count--- %lu\n",arr,(unsigned long)arr.count);
}
#pragma mark - 數(shù)組拼接成字符串
- (void)arrayToString {
NSArray *array = [NSArray arrayWithObjects:@"I", @"LOVE", @"U", nil];
// 用空格隔開數(shù)組中的元素
NSString *str = [array componentsJoinedByString:@" "];
NSLog(@"str--- %@\n",str);
}