• OC中的NSSet和NSMutableSet


    学习链接:https://www.cnblogs.com/QianChia/p/5782709.html

    自己只写一部分,还剩下的以后再看吧

    //
    //  learn_set.m
    //  learn_KVC
    //
    //  Created by 蔡佳明 on 2020/10/15.
    //
    
    #import <Foundation/Foundation.h>
    int main()
    {
        //set就是一种集合 无无序集合
        //有两种set 一种是不可变的NSSet 一种是可变的Set NSMutableSet
        
        //先看不可变的
        //对象方法创建
        NSSet *set1 = [[NSSet alloc] init];
        
        //创建一个与set1地址相同的
        NSSet *set2 = [[NSSet alloc] initWithSet:set1];
        
        //创建有几个元素的set
        NSSet *set3 = [[NSSet alloc] initWithObjects:@"55","23", nil];
        
        //通过数组创建
        NSSet *set4 =[[NSSet alloc] initWithArray:@[@"55",@"23"]];
        
        //类方法创建
        NSSet *set5 = [NSSet set];
        
        //地址相同的set
        NSSet *set6 = [NSSet setWithSet:set1];
        
        NSSet *set7 = [NSSet setWithObject:@8];
        NSSet *set8 = [NSSet setWithObjects:@55, @23, @3, @8, nil];
        NSSet *set9 = [NSSet setWithArray:@[@55, @23, @3, @8, @21, @33, @18]];
    
        
        // 已有对象创建
                
        NSSet *set10 = [set1 setByAddingObject:@8];
        NSSet *set11 = [set1 setByAddingObjectsFromSet:set9];
        NSSet *set12 = [set1 setByAddingObjectsFromArray:@[@55, @23, @3, @8, @21, @33,@18]];
        
        //计算成员个数
        NSUInteger length = [set1 count];
        
        //获取集合中任意元素
        id anyObject = [set1 anyObject];
        
        //判断集合是否包含哪个元素
        BOOL containsObject = [set1 containsObject:@"23"];
        
        // 判断是否包含哪个元素 包含返回1 不包含返回null
        id number = [set1 member:@"23"];
        
        //判断两个集合是否相等
        BOOL isEqualToSet = [set1 isEqualToSet:set2];
        
        //是否是另一个集合的子集
        BOOL isSubsetOfSet = [set1 isSubsetOfSet:set2];
        
        //一个集合和另一个集合是否有交集
        BOOL intersectsSet = [set1 intersectsSet:set2];
        
        ///下面说一下可变集合的一些操作
        //创建
        NSMutableSet *setM1 = [[NSMutableSet alloc] initWithCapacity:0];
        // 类方法创建
        NSMutableSet *setM2 = [NSMutableSet setWithCapacity:0];
        
        //集合元素的添加
        [setM1 addObject:@8];
        
        //通过数组进行添加
        [setM1 addObjectsFromArray:@[@1,@2]];
        
        //集合元素的删除
        //删除指定元素
        [setM1 removeObject:@1];
        
        //删除两个集合的交集
        [setM1 minusSet:set1];
        
        //删除所有元素
        [setM1 removeAllObjects];
        
        //集合元素的修改
        //重新覆盖原来集合
        [setM1 setSet:[NSSet setWithObjects:@1,@2, nil] ];
        
        //集合的交集
        [setM1 intersectsSet:setM2]; //交集保存在setM1中
        
        //集合的并集
        [setM1 unionSet:setM2];
        
        //集合的遍历
        //迭代遍历
        NSEnumerator *enu = [setM1 objectEnumerator];
        id obj = nil;
        while(obj = [enu nextObject])
        {
            NSLog(@"%@",obj);
        }
        
        //集合的条件遍历
        set1 = [set2 objectsPassingTest:^BOOL(id  _Nonnull obj, BOOL * _Nonnull stop)
        {
            return [obj intValue] >10 ?  : NO;
        }];
        
        
        
        return 0;
    }
  • 相关阅读:
    动态内存Treap
    最大流Dinic
    图的遍历
    Aho_Corasick自动机(AC自动机)
    邻接表
    COJ 3007 Mr.Yang的小助手
    COJ 0601&0602 动态规划(二)及加强
    Codeforces 603A Alternative Thinking
    HDU 2222 Keywords Search
    codeforce--600D
  • 原文地址:https://www.cnblogs.com/caijiaming/p/13824965.html
Copyright © 2020-2023  润新知