//// main.m// 集合_NSSet//// Created by on 14-10-6.// Copyright (c) 2014年 apple. All rights reserved.//#importint main(int argc, const char * argv[]) { @autoreleasepool {///不可变集合///// 概念:NSSet类,是一组单值对象的集合,且NSSet实例中元素是无序,同一个对象只能保存一个 // 直接创建集合 NSSet *set1 = [[NSSet alloc] initWithObjects:@"a", @"b", @"c", @"d", nil]; NSLog(@"%@", set1); // 通过数组的构建集合 NSArray *array = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", nil]; NSSet *set2 = [[NSSet alloc] initWithArray:array]; NSLog(@"%@", set2); // 通过已有的集合构建 NSSet *set3 = [[NSSet alloc] initWithSet:set2]; NSLog(@"%@", set3); // 集合中元素的个数 NSLog(@"%ld", [set3 count]); // 以数组格式返回集合3中所有对象 NSArray *array2 = [set3 allObjects]; NSEnumerator *enumArray = [array2 objectEnumerator]; id obj; while (obj = [enumArray nextObject]) { NSLog(@"%@", obj); } // 返回集合3中任意一个对象 id tmp = [set3 anyObject]; NSLog(@"%@", tmp); // 集合3中是否包含内容为2的字符串对象,包含返回YES,不包含返回NO NSLog(@"判断是否存在:%hhd", [set3 containsObject:@"2"]); // 集合1中和集合3中是否包含有相同的元素对象,有返回YES,没有返回NO NSLog(@"判断是否有相同:%hhd", [set1 intersectsSet:set3]); // 判断集合2和集合3中的元素是否完全匹配,是返回YES,否返回0 NSLog(@"判断是否完全匹配:%hhd", [set2 isEqualToSet:set3]); // 判断集合3是否是集合4的子集,是返回YES,否返回NO NSSet *set4 = [[NSSet alloc] initWithObjects:@"1", @"2", @"3", @"one", @"two", @"a", nil]; NSLog(@"判断子集:%hhd", [set3 isSubsetOfSet:set4]); // 为集合5追加一个元素,返回新的集合6 NSSet *set5 = [NSSet setWithObjects:@"1", @"2", nil]; NSSet *set6 = [set5 setByAddingObject:@"one"]; NSEnumerator *enumSet6 = [set6 objectEnumerator]; id objSet6; while (objSet6 = [enumSet6 nextObject]) { NSLog(@"集合6:%@", objSet6); } // 合并集合1和2,返回新的集合7 NSSet *set7 = [set1 setByAddingObjectsFromSet:set2]; NSLog(@"%@", set7); // 合并集合1和数组对象array,并生成新的集合8 NSSet *set8 = [set1 setByAddingObjectsFromArray:array]; NSLog(@"%@", set8); ///可变集合/// // 创建空的集合 NSMutableSet *muSet1 = [NSMutableSet set]; NSLog(@"%@", muSet1); NSMutableSet *muSet2 = [NSMutableSet setWithObjects:@"1", @"2", nil]; NSMutableSet *muSet3 = [NSMutableSet setWithObjects:@"a", @"2", nil]; // 集合2“减去”集合3中的元素 [muSet2 minusSet:muSet3]; NSLog(@"%@", muSet2); // 集合4和集合3的交集 NSMutableSet *muSet4 = [NSMutableSet setWithObjects:@"a", @"b", nil];// 注意这里是intersectSet不是intersectsSet [muSet4 intersectSet:muSet3]; NSLog(@"%@", muSet4); // 集合4和集合3的并集 [muSet4 unionSet:muSet3]; NSLog(@"%@", muSet4); // 将空集合1设置成集合3中的内容 [muSet1 setSet:muSet3]; NSLog(@"%@", muSet1); // 根据数组增加集合元素 [muSet4 addObjectsFromArray:array]; NSLog(@"%@", muSet4); // 移除指定元素 [muSet4 removeObject:@"1"]; NSLog(@"%@", muSet4); // 移除所有元素 [muSet4 removeAllObjects]; NSLog(@"%@", muSet4); ///练习:倒置字符串/// NSMutableString *muString = [[NSMutableString alloc] initWithString:@"abc123.xyz789"]; int length = (int)muString.length; for (int i = 0, j = length - 1; i < j; i++, j--) { NSRange rangI = {i, 1}; NSRange rangJ = {j, 1}; id tmp1 = [muString substringWithRange:rangI]; [muString replaceCharactersInRange:rangI withString:[muString substringWithRange:rangJ]]; [muString replaceCharactersInRange:rangJ withString:tmp1]; } NSLog(@"字符串的倒置:%@", muString); } return 0;}