文档章节

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

TomatosX
 TomatosX
发布于 2014/10/06 21:42
字数 695
阅读 13
收藏 0
//
//  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;
}



© 著作权归作者所有

共有 人打赏支持
TomatosX
粉丝 22
博文 207
码字总数 119547
作品 0
成都
iOS工程师
私信 提问
Object-c 中的数据类型

导航: 基本类型 ID 对象类型常见的有 对象类型 -NSLog -NSNumber -NSString和NSMutableString -NSArray和NSMutableArray -NSSet和NSMutableSet -NSDictionary和NSMutableDictionary 基本类型......

gaoios
2014/01/05
0
0
OC语言自学《十二》---- OC(Foundation框架部分知识总结)

NSRange 表示一个范围 主要用来操作字符串 CGPoint、NSPoint 通过设置x坐标和y坐标来设置某个点 IOS设备的x和y从左上角开始,y值往下面增加,x值往右面增加 CGSize、NSSize 表示一个矩形尺寸...

罗眯眯
2014/04/09
0
0
Summary for NSSet

集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中大部分数据结构都存在可变与不可变两种数据。这里的集合很像Java语言与C语言中的Set,用法基本...

sirier
2012/11/24
0
0
copy与mutableCopy区别,strong和copy的使用

本篇文章主要讲两个知识点:1.深拷贝与浅拷贝 2.NSArray和NSMutaleArray应该用copy还是stong修饰。 一、我们先来分析深拷贝(返回一个对象,一个新的指针指向一个新的内容)与浅拷贝(返回一个...

Jesse1949
2017/09/01
0
0
OC之NSSet/NSMutableSet

1、集合(NSSet)与数组(NSArray)比较: (1)都是存储不同的对象的地址 (2)NSArray是有序的集合,NSSet是无序的集合。 (3)集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度...

feng_blog
2015/09/02
66
0

没有更多内容

加载失败,请刷新页面

加载更多

用any-loader封装jQuery的XHR —— 随便写着玩系列

哎,都说没人用JQuery啦,叫你别写这个。 其实我也是好高骛远使用过npm上某个和某个很出名的XHR库,嗯,认识我的人都知道我喜欢喷JQ,以前天天喷,见面第一句,你还用JQ,赶紧丢了吧。但我也...

曾建凯
35分钟前
0
0
聊聊storm的AggregateProcessor的execute及finishBatch方法

序 本文主要研究一下storm的AggregateProcessor的execute及finishBatch方法 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout......

go4it
今天
3
0
大数据教程(7.5)hadoop中内置rpc框架的使用教程

博主上一篇博客分享了hadoop客户端java API的使用,本章节带领小伙伴们一起来体验下hadoop的内置rpc框架。首先,由于hadoop的内置rpc框架的设计目的是为了内部的组件提供rpc访问的功能,并不...

em_aaron
今天
5
0
CentOS7+git+github创建Python开发环境

1.准备CentOS7 (1)下载VMware Workstation https://pan.baidu.com/s/1miFU8mk (2)下载CentOS7镜像 https://mirrors.aliyun.com/centos/ (3)安装CentOS7系统 http://blog.51cto.com/fengyuns......

枫叶云
昨天
3
0
利用ibeetl 实现selectpicker 的三级联动

1. js 直接写在html页面上面,ibeetl 就可以动态地利用后台传上来的model List ,不需要每次点击都要ajax请求后台 2. 使用selectpicker 的时候,除了对selecct option的动态处理后,还需要 $("#...

donald121
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部