集合的基本概念
在Foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素是无序的,同一个对象只能保存一个,并且它也分为可变和不可变的集合对象(可变集合对象:NSMutableSet)。
不可变集合—NSSet
//类似与数组的构建,直接创建一个集合。
NSSet *set1 = [[NSSet alloc] initWithObjects:@“one”,@“two”,nil]; //实例方法
//通过数组构建集合
NSArray *array = [NSArray arrayWithObjects:@“1”,@“2”,@“3”,nil];
NSSet *set2 = [[NSSet alloc] initWithArray:array];
//通过已有集合构建集合
NSSet *set3 = [[NSSet alloc] initWithSet:set2];
NSSet常用方法
//集合3中对象的个数
int count = [set3 count];
//以数组的形式返回集合3中所有的对象
NSArray *allObjects = [set3 allObjects];
//返回集合3中的任意一个对象
id object = [set3 anyObject];
//集合4中是否包含内容为2的字符串对象,如果包含,返回YES,否则为NO。
BOOL isContain = [set4 containsObject:@“2”];
//集合4中与集合2中是否存在有相同元素的对象,如果有,返回YES,否则为NO。
BOOL isIntersect = [set4 intersectsSet:set2];
//集合4与集合5中的元素是否完全匹配,如果匹配返回YES,否则返回NO。
BOOL isEqual = [set4 isEqualToSet:set5];
//集合4是否是集合5的子集合,如果是返回YES,否则为NO。
BOOL isSubset = [set4 isSubsetOfSet:set5];
NSSet *appSet1 = [set5 setByAddingObject:@“two”];
NSSet *appSet2 = [set4 setByAddingObjectsFromSet:set3];
NSSet *appSet3 = [set3 setByAddingObjectsFromArray:array2];
NSMutableSet *set1 = [NSMutableSet set];
NSMutableSet *set2 = [NSMutableSet setWithObjects:@“1”,@“2”,nil];
NSMutableSet *set3 = [NSMutableSet setWithObjects:@“a”,@“2”,nil];
//集合2“减去”集合3中的元素,集合2最后元素只有一个,且为1.
[set2 minusSet:set3];
//集合2与集合3中元素的交集,集合2最后元素只有一个,且为2.
[set2 intersectSet:set3];
//集合3与集合3中元素的并集,集合2最后元素只有3个,且为1,2,a
[set2 unionSet:set3];
//将空集合1设置为集合3中的内容
[set1 setSet:set3];
//根据数组的内容删除集合中的对象
[set2 addObjectsFromArray:array];
[set2 removeObject:@“1”];
[set2 removeAllObjects];
*********************例题*********************
1.构建一个数组,含有100个1~100的整数,并且用不同的方式将它们遍历出来。
NSMutableArray *arrayx= [NSMutableArray arrayWithCapacity:100];
for(int i = 0;i < 100 ;i++){
NSNumber *intNumber = [NSNumber numberWithInt:i];
[arrayx addObject:intNumber];
}
for(NSNumber *number in arrayx){
NSLog(@"$$$$$$$________%@",number);
}
NSLog(@“############高效遍历方法##############”);
for(NSString *string in arrayx){
NSLog(@"$$$$$$$____@____%@",string);
}
NSLog(@"############普通遍历方法############");
for (int index = 0; index < 100; index++) {
NSString *str = [arrayx objectAtIndex:index];
NSLog(@"-----%@",str);
}
2.有这么一个整数——123456789,如何将这个整数的每一位数,从末位开始依次放入一个数组中,(那么这个数组的第一位元素为9,以此类推),如果你成功了,将它们遍历出来。
NSLog(@"------------123456789------------");
int numberx = 123456789;
NSMutableArray *arrayz = [[NSMutableArray alloc]init];
while (numberx > 0) {
int n = numberx%10;
numberx = numberx/10;
[arrayz addObject:[NSNumber numberWithInt:n]];
}
for (NSNumber *num in arrayz) {
NSLog(@"++++++++++++++++++++%@",num);
}
3.如何将字符串@“abc123.xyz789倒置。
NSLog(@"-------------abc123.xyz789-------------");
NSString *str1 = @"abc123.xyz789";
int length2 = [str1 length];
while (length2 > 0) {
char a = [str1 characterAtIndex:length2-1];
length2--;
NSLog(@"NNNNNNNNNNNN-----------%c",a);
}
length2 = [str1 length];
NSRange range ;
range.location = 0;
range.length = 1;
NSMutableArray *arraym = [[NSMutableArray alloc]init];
NSMutableArray *arrayn = [[NSMutableArray alloc]init];
for (int zyx=0; zyx < length2; zyx++) {
NSString *substr = [str1 substringWithRange:range];
[arraym addObject:substr];
NSLog(@"-----------------%@",substr);
range.location ++;
}
for (int i = 0 ; i < length2; i++) {
NSString *tt = [arraym lastObject];
[arrayn addObject:tt];
[arraym removeLastObject];
}
NSString *good = [arrayn componentsJoinedByString:@","];
NSLog(@"转换后的字符串为:%@",good);
//删除字符串中的“,”。
NSMutableString*mu = [[NSMutableString alloc]init];
mu = [NSMutableString stringWithString:good];
NSLog(@">>>>>>>>>>%@",mu);
for (int z =1; z < length2; z++) {
[mu deleteCharactersInRange:NSMakeRange(z, 1)];
NSLog(@"<<<<<<<<<<<%@",mu);
}