• Objective-C之集合对象


    转载自http://www.xuanyusong.com/archives/425

    集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中 大部分数据结构都存在可变与不可变两种数据。这里的集合很像Java语言与C语言中的Set,用法基本一样。但是在Objective-C语言中同一个集 合可以储存不同对象的数据。下面分享一个例子就很清楚的看出。

    1. 创建不可变集合对象
    [NSNumber numberWithInteger:9527]; 因为集合中只能存放对象,所以如果要存数字的话要把数字转换成对象方可存入。
    [NSSet setWithObjects:...]:创建集合对象,并且初始化集合中的数值,结尾必需使用nil标志。
    [set count] ; 得到这个结合对象的长度。
    [set containsObject:...]: 判断这个集合中是否存在传入的对象,返回Bool值。
    [set objectEnumerator]: 将集合放入迭代器。
    [enumerator nextObject]:得到迭代器中的下一个节点数据,使用while遍历这个迭代器,方可遍历集合对象中的对象。
    [set isEqualToSet:objset]:判断两个集合是否完全相等,返回Bool值。
    [set isSubsetOfSet:objset]:判断集合中的所有数据是否都相等与objeset集合中,返回Bool值。
    [set istersectSet:objset]:判断集合中的至少有一个数据相等与objeset集合中,返回Bool值。
    01#import <UIKit/UIKit.h>
    02#import "MyClass.h"
    03int main(int argc, char *argv[])
    04{
    05    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    06 
    07    //添加我们的测试代码
    08 
    09    //创建集合
    10    NSSet *set = [NSSet setWithObjects:@"雨松MOMO",@"15810463139",[NSNumber numberWithInteger: 9527], nil];
    11 
    12    //集合的数量
    13    int count = [set count];
    14    NSLog(@"集合中的数量: %d",count);
    15 
    16    //检测包含
    17    NSString * str = @"雨松MOMO";
    18    if ([set containsObject:str]) {
    19        NSLog(@"集合中包含 %@这个对象", str);
    20    }
    21 
    22    //迭代器遍历
    23    NSEnumerator *enumerator = [set objectEnumerator];
    24 
    25    NSObject *object  = [enumerator nextObject];
    26 
    27    while (object != nil) {
    28        NSLog(@"迭代器遍历集合中的数据: %@",object);
    29        object = [enumerator nextObject];
    30    }
    31 
    32    //快速枚举遍历
    33    for (NSObject *object in set) {
    34        NSLog(@"快速枚举遍历集合中的数据: %@",object);
    35    }
    36 
    37    int retVal = UIApplicationMain(argc, argv, nil, nil);
    38    [pool release];
    39    return retVal;
    40}

    2.创建可变集合对象

    NSMutableSet 继承NSSet ,所以可以使用父类的方法。

    [NSMutableSet setWithCapacity:10]:创建可变集合对象,并且初始化长度为10。
    [set addObject: obj] : 向集合中动态的添加对象。
    [set removeObject:obj]:删除集合中的一个对象。
    [set removeAllObjects]:删除集合中的所有对象。
    [set unionSet:obj]:向集合中添加一个obj集合的所有数据。
    [set minusSet:obj]:向集合中删除一个obj集合的所有数据。
    [set intersectSet]:向集合中删除一个不包含obj集合的所有数据。
    01#import <UIKit/UIKit.h>
    02#import "MyClass.h"
    03int main(int argc, char *argv[])
    04{
    05    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    06 
    07    //添加我们的测试代码
    08 
    09    //创建集合
    10    NSMutableSet *set = [NSMutableSet setWithCapacity:10];
    11 
    12    //添加数据
    13    [set addObject:@"雨松MOMO"];
    14    [set addObject:[NSNumber numberWithInt:9527]];
    15 
    16    //添加数据在删除
    17    NSString *str = @"删除我";
    18    [set addObject:str];
    19    //删除它
    20    [set removeObject:str];
    21 
    22    //快速枚举遍历
    23    for (NSObject *object in set) {
    24        NSLog(@"快速枚举遍历集合中的数据: %@",object);
    25    }
    26 
    27    int retVal = UIApplicationMain(argc, argv, nil, nil);
    28    [pool release];
    29    return retVal;
    30}

    集合之美,不解释!哇咔咔~ 晚安喔 !!!

  • 相关阅读:
    Python中所有的关键字
    关于selenium的8种元素定位
    对提示框的操作
    selenium+webservice进行百度登录
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled...报错解决
    Vue中使用echarts
    npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142解决方法
    插入排序
    冒泡排序优化
    roject 'org.springframework.boot:spring-boot-starter-parent:XXX' not found 解决
  • 原文地址:https://www.cnblogs.com/ioschen/p/3294172.html
Copyright © 2020-2023  润新知