zoukankan      html  css  js  c++  java
  • NSSet

    NSSet跟NSArray的区别:散列存与顺序存储的区别。体现在查找速度上的差别。都存放cocoa对象。

     

     

    //

    //  TextNSSet.m

    //  hellowWorld

    //

    //  Created by hongtao on 2018/4/11.

    //  Copyright © 2018 hongtao. All rights reserved.

    //

     

    #import "TestNSSet.h"

     

    @implementation TestNSSet

    -(void)testNSSet {

        //不可变集合对象。

        //NSArray区别:元素是无序的。不可以重复元素。

        //生成:initWithObject 调用类方法生成setWithObjects

        NSSet* set = [[NSSet alloc]initWithObjects:@"1",@"name",@"1", nil];

        NSLog(@"set count:@%lu",(unsigned long)[set count]);

        //类方法初始化。

        NSSet* set2 = [NSSet setWithObjects:@"1",@"2",@"3",nil];

        NSLog(@"set2: %@",set2);

        //拼接

        NSSet *set3=[NSSet new] ;

        //注意 set3 重新赋了值。不是set3可变。

        set3 =[set3 setByAddingObjectsFromArray:@[@"6",@"1",@"8"]];

        NSLog(@"set3 affter: %@",set3);//输出结果

        

        set3 =[set2 setByAddingObjectsFromArray:@[@"6",@"1",@"8"]];

        NSLog(@"set3 affter: %@",set3);//输出结果 3,1,6,8,2 (无重复)

        

        NSLog(@"set 3 contain object "1":%@",[set3 containsObject:@"1"]?@"YES":@"NO");

        //对比两个set是否一样

        NSLog(@"set3 等于 set2:%@",[set3 isEqualToSet:set2]?@"YES":@"NO");

        

        for (int i =0 ; i< set3.count; i++) {

          //不可以指定取到哪个位置的值。 set3[1] 这样是不行的。

        }

        //可以使用枚举遍历

        NSEnumerator * em = [set3 objectEnumerator];

        id obj ;

        while (obj = [em nextObject]){

            NSLog(@"in while -->%@",obj);

        }

        

        NSMutableSet *mset = [[NSMutableSet alloc]initWithCapacity:10];

        [mset addObject:@"1"];

        [mset addObjectsFromArray:@[@"2",@"3",@"9"]];

        [mset removeObject:@"1"];

        id obj1 = [mset allObjects];

        NSLog(@"%@",obj1);

        

        em = [mset objectEnumerator];

        while (obj = [em nextObject]){

            NSLog(@"in while ----->%@",obj);

        }

        

    }

    @end

  • 相关阅读:
    C#调用java类、jar包方法
    利用IKVM在C#中调Java程序
    同样版本的jstl,都是jstl1.2版本,有个有问题,另一个没有问题
    Python安装及开发环境配置
    jQuery EasyUI parser 的使用场景
    关于HttpURLConnection.setFollowRedirects
    HttpUrlConnection 的 setDoOutput 与 setDoInput
    【Mybatis】向MySql数据库插入千万记录 单条插入方式,用时 1h16m30s
    [MyBatis]再次向MySql一张表插入一千万条数据 批量插入 用时5m24s
    [MyBatis]向MySql数据库插入一千万条数据 批量插入用时6分 之前时隐时现的异常不见了
  • 原文地址:https://www.cnblogs.com/mamamia/p/8819441.html
Copyright © 2011-2022 走看看