黑马程序员--集合操作


集合操作

不可变集合初始化:类方法和对象方法初始化

</pre><pre name="code" class="objc">//
//  main.m
//  集合练习
//
//  Created by smartlei on 15/6/2.
//  Copyright (c) 2015年 smartlei. All rights reserved.
//

#import <Foundation/Foundation.h>
@interface NSSet (printing)//让NSSet使用分类协议

-(void)printf;
@end

@implementation NSSet (printing)

-(void)printf
{
    printf("{");
    
    for(NSNumber *element in self)
    {
        printf(" %li",(long)[element integerValue]);
    }
    
    printf("}\n");
}
@end
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSSet *set3=[NSSet setWithObjects:@12,@200,@3,nil];
        NSSet *set5=[[NSSet alloc] initWithObjects:@123,@34,@45, nil];
        NSSet *set6=[NSSet new];
       // [set6 initWithObjects:@123,@34,@45, nil];//注意该方式错误,因为set6申明的不可变集合,初始化后内存数据不可再次更该
        
        NSLog(@"set3:");
        [set3 printf];
        NSLog(@"set5:");
        [set5 printf];
    }
    return 0;
}

输出:

2015-06-02 15:43:31.582集合练习[1998:218885] set3:

{ 12 3 200}

2015-06-02 15:43:31.583集合练习[1998:218885] set5:

{ 123 34 45}


集合成员测试:某一个成员是否在集合中

   NSMutableSet *set1=[NSMutableSet setWithObjects:@1,@3,@5,@10, nil];

        NSLog(@"set1:");
        [set1 printf];
        //确定成员个数
        NSLog(@"set1成员个数:%ld",[set1 count]);
        //包含性测试
        
        if([set1 containsObject:@1]==YES)
        {
            NSLog(@"set1 containsObject:@1");
            
        }
        //是否是集合成员测试
        if ([set1 member:@1])
        {
            NSLog(@"set1 member:@1");
        }

输出:

2015-06-02 15:47:57.244集合练习[2006:220848] set1:

{ 3 10 5 1}

2015-06-02 15:47:57.245集合练习[2006:220848] set1成员个数:4

2015-06-02 15:47:57.245集合练习[2006:220848] set1 containsObject:@1

2015-06-02 15:47:57.246集合练习[2006:220848] set1 member:@1


不可变集合测试:

1、测试相等
2、测试集合接受者至少有一个成员出现在另一个集合中
3、测试集合接受者的每一个成员都出先在另一个集合中

        NSSet *set1=[NSSet setWithObjects:@1,@3,@5,@10, nil];
         NSSet *set2=[NSSet setWithObjects:@1,@3,@5,@10, nil];
         NSSet *set3=[NSSet setWithObjects:@3,@5,@10000000, nil];
         NSSet *set4=[NSSet setWithObjects:@3,@5, nil];
        //相等性测试
        if ([set1 isEqualTo:set2]==YES)
        {
            NSLog(@"set1 isEqualTo:set2");
        }
        else
        {
            NSLog(@"set1 is NOT EqualTo:set2");
        }
        if ([set1 isEqualTo:set3]==YES)
        {
            NSLog(@"set1 isEqualTo:set3");
        }
        else
        {
            NSLog(@"set1 is NOT EqualTo:set3");
        }
        //测试接受者只要一个对象存在在与另一个集合中
        if([set3 intersectsSet:set2]==YES)
        {
            NSLog(@"set3 intersectsSet:set2");
        }
        //测试接受者所有对象存在于另一个成员中
        if([set3 isSubsetOfSet:set2]==YES)
            NSLog(@"set3 所有成员都在set2");
        else
            NSLog(@"set3 所有成员不都在set2");
        if([set4 isSubsetOfSet:set2]==YES)
            NSLog(@"set4 所有成员都在set2");
        else
            NSLog(@"set4 所有成员不都在set2");

输出:

2015-06-02 15:59:37.310集合练习[2039:224734] set1 isEqualTo:set2

2015-06-02 15:59:37.311集合练习[2039:224734] set1 is NOT EqualTo:set3

2015-06-02 15:59:37.312集合练习[2039:224734] set3 intersectsSet:set2

2015-06-02 15:59:37.312集合练习[2039:224734] set3所有成员不都在set2

2015-06-02 15:59:37.312集合练习[2039:224734] set4所有成员都在set2


可变集合测试

集合交并集操作

1、集合交集
2、集合并集
3、集合删除并集

    NSMutableSet *set1=[NSMutableSet setWithObjects:@1,@3,@5,@10,@8,@9, nil];
        NSSet *set2=[NSSet setWithObjects:@1,@3,@5,@10, @6,nil];
       
        
        //获得交集对象
        [set1 intersectSet:set2];
         NSLog(@"获得交集:");
        [set1 printf];
        
             //两个集合的并集对象
        NSMutableSet *set3=[NSMutableSet setWithObjects:@1,@3,@5,@10,@8,@9, nil];

        NSLog(@"获得并集:");
        [set3 unionSet:set2];
         [set3 printf];
     
        //删除并集对象
        NSMutableSet *set4=[NSMutableSet setWithObjects:@1,@3,@5,@10,@8,@9, nil];
        
        NSLog(@"删除并集对象:");
        [set4 minusSet:set2];
        [set4 printf];

输出:

2015-06-02 16:31:42.456 集合练习[2070:231861] 获得交集:

{ 3 10 5 1}

2015-06-02 16:31:42.457 集合练习[2070:231861] 获得并集:

{ 9 5 1 10 6 3 8}

2015-06-02 16:31:42.457 集合练习[2070:231861] 删除并集对象:

{ 9 8}



对单个集合操作:
1、添加对象
2、删除对象
3、删除所有对象

           NSMutableSet *set1=[NSMutableSet setWithObjects:@1,@3,@5,@10,@8,@9, nil];
        //向集合中添加对象
     
        [set1 addObject:@100];
        NSLog(@"set1 addObject:@100:");
        [set1 printf];
        
        //从集合中移除对象
        [set1 removeObject:@100];
         NSLog(@"set1 removeObject:@100:");
        [set1 printf];
        
        //从集合中删除所有对象
        NSLog(@"删除集合所有对象:");
        [set1 removeAllObjects];
        [set1 printf];


输出:

2015-06-02 16:37:11.477 集合练习[2081:233175] set1 addObject:@100:

{ 100 9 5 10 1 3 8}

2015-06-02 16:37:11.478 集合练习[2081:233175] set1 removeObject:@100:

{ 9 5 10 1 3 8}

2015-06-02 16:37:11.478 集合练习[2081:233175] 删除集合所有对象:

{}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值