Object-C代码练习【集合_NSSet和NSMutableSet】

//
//  main.m
//  集合_NSSet
//
//  Created by on 14-10-6.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import <Foundation/Foundation.h>

int 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;
}



你可能感兴趣的:(Object-C代码练习【集合_NSSet和NSMutableSet】)