一 OC中的集合类型:
/*
NSArray 数组
NSDictionary 字典
NSSet 集
*/
二 数组
1.1定义: NSArray 继承于 NSObject 用来管理/存储有序的对象
ps
自定义:
NSArray *array3 = [[NSArray alloc]initWithObjects:@"Rose",@"Jack", nil,@"Tom",@"jer", nil];//nil 表述 数组结束
NSLog(@"%@",array3);
遍历构造器:
NSArray *array4= [NSArray arrayWithObjects:@"l",@"m",@"c",@"s", nil] ;
NSLog(@"%@",array4);
1.2 通过下标访问数组中的元素 因为数组里的对象是有序的
两种方法求字符中的对象一个是通过下标数字
ps:
1⃣ NSString *str = [array4 objectAtIndex:0];
NSLog(@"%@",str);
2⃣ 一个是直接第几个数字英文加 Object
NSString *str1 = [ array4 firstObject];
NSLog(@"%@",str1);
3⃣ 获取数组中元素个数
NSUInteger cou = [array4 count];
NSLog(@"%lu",cou);
2.1 NSMutableArray 可变数组 给的是空间 不是数组
2.1 注意:在使用 NSMutableArray 时 先要将他设成空的
ps: NSMutableArray *array5 = [[NSMutableArray alloc]initWithCapacity:0];
NSLog(@"%@",array5);
2.2添加对象
1⃣ 逐个添加 addObject:(nsstring*)
[array5 addObject:@"尼克斯"];
[array5 addObject:@"莉莉"];
[array5 addObject:@"杰克"];
NSLog(@"%@",array5);
注意 :这样打印出来只能是编码 看不出来
需要遍历一下 for
for (NSUInteger i =0; i <[array5 count]; i++) {
NSLog(@"%@",[array5 objectAtIndex:i]);
}
2⃣ 一次添加很多 arrayWithObjects:
NSMutableArray *array6 = [NSMutableArray arrayWithObjects:@"小明",@"小红",@"小王",@"小张", nil];
NSLog(@"%@",array6);
注意:仍需要遍历
for (NSUInteger i = 0; i <[array6 count]; i++) {
NSLog(@"%@",[array6 objectAtIndex:i]);
}
3⃣ 用一个数组 为另一个添加元素
2.3删除数组元素
1⃣ 1.删除指定位置的对象
公式:removeObjectAtIndex
[array8 removeObjectAtIndex:1];
NSLog(@"%@",array8);
// 2.删除某个对象 已知某个对象删除
公式: removeObject:@“4” (nsstring*)就是你知道的
[array8 removeObject:@"4"];
NSLog(@"%@",array8);
// 删除最后一个元素
公式:removeLastObject
[array8 removeLastObject];
NSLog(@"%@",array8);
//清空数组
公式:removeAllObjects
[array8 removeAllObjects];
NSLog(@"%@",array8);
*/
2.4 排序
1⃣
普通冒泡排序的过程:
NSMutableArray *array9 = [NSMutableArray arrayWithObjects:@"iphone",@"ipod",@"ipad",@"iwatch",@"iMac",@"iTouch", nil];
// 遍历数组
for (NSUInteger i = 0; i <[array9 count]; i++) {
NSLog(@"%@",[array9 objectAtIndex:i]);
}
冒泡排序:
for (NSUInteger i = 0; i <[ array9 count]-1; i++) {
for (NSUInteger j =0; j < [array9 count]-i-1; j++) {
// 获取前一个位置的元素 和后一个相比较
NSString *firsts1 = [ array9 objectAtIndex:j];
NSString *seconds2 = [array9 objectAtIndex:j+1];
// 通过比较元素大小决定是否交换
// NSOrderedDescending = 1
if ([firsts1 compare:seconds2]>1) {
[array9 exchangeObjectAtIndex:j withObjectAtIndex:j+1];//交换位置
}
for (NSString *str in array9) {
NSLog(@"%@",str );
}
}
}
变型: NSArray *sortarray = [array9 sortedArrayUsingSelector:@selector(compare:)];
for (NSString *str in sortarray) {
NSLog(@"%@",str);
注意:OC 中的数组排序 @selector()选择器 ()括号内选择的是用什么方法 只能完成升序