文档章节

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

TomatosX
 TomatosX
发布于 2014/10/06 21:42
字数 695
阅读 13
收藏 0
点赞 0
评论 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
博文 143
码字总数 119547
作品 0
成都
iOS工程师
Object-c 中的数据类型

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

gaoios ⋅ 2014/01/05 ⋅ 0

Summary for NSSet

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

sirier ⋅ 2012/11/24 ⋅ 0

copy与mutableCopy区别,strong和copy的使用

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

Jesse1949 ⋅ 2017/09/01 ⋅ 0

OC之NSSet/NSMutableSet

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

feng_blog ⋅ 2015/09/02 ⋅ 0

Objective-C 语法之集合对象

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

鉴客 ⋅ 2011/10/04 ⋅ 0

Objective-C语法之集合对象的那些事儿(九)

Objective-C语法之集合对象的那些事儿 集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中大部分数据结构都存在可变与不可变两种数据。这里的集合...

彭博 ⋅ 2012/03/09 ⋅ 0

一些技术点在其它博客里面的详解

NSSet和NSArray的区别: http://blog.csdn.net/duxinfeng2010/article/details/7687236 NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet , NSMutableSet类...

hell03W ⋅ 2016/04/20 ⋅ 0

OC中的NSSet(集合)

NSSet(集合) 集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。 集合是一种哈希表,运用散列算法,查找集合中的...

Dumplings ⋅ 2016/04/01 ⋅ 0

OC语言自学《十二》---- OC(Foundation框架部分知识总结)

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

罗眯眯 ⋅ 2014/04/09 ⋅ 0

NSSet 集合对象

集合 NSSet 对象是一组单值对象的组合,比如,1个包含1到50的数字的集合。集合对象的操作包括搜索、添加、删除集合中的成员(可变集合的功能),比较两个集合,计算两个集合的交集和并集等。...

晨曦之光 ⋅ 2012/03/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 30分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 50分钟前 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 55分钟前 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

文件压缩和打包zip、tar

第六章 文件压缩和打包 6.5 zip压缩工具 zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 注意:...

弓正 ⋅ 今天 ⋅ 0

vuex

一、状态对象如何赋值给内部对象。三种方式: 1、使用computed赋值,一定要写this,不然找不到$store。 computed:{ count(){ return this.$store.state.count; }} 2、通...

大美琴 ⋅ 今天 ⋅ 0

javaScript 设计模式

1、构造函数模式 ` /** 构造一个动物的函数 */ function Animal(name, color){ this.name = name; this.color = color; this.getName = function(){ return this.name; } } // 实例一个对象 ......

fangPeng_ ⋅ 今天 ⋅ 0

日常嘚瑟:TeamCity构建中解压和打包tar

要弄一个新的构建,很简单,从两个构建的tar格式Artifact中分别取一部分,重新打一个tar。 所以,我去写个脚本用curl下载两个依赖的Artifact,然后解压移动重新打个tar? 开什么玩笑,我的技...

谷永权 ⋅ 今天 ⋅ 0

Istio官方文档中文版

阅读目录 Istio官方文档中文版 回到目录 Istio官方文档中文版 http://istio.doczh.cn/ https://istio.io/docs/concepts/what-is-istio/goals.html 为什么要使用Istio? 在从单体应用程序向分...

xiaomin0322 ⋅ 今天 ⋅ 0

CentOS 7 Omnibus 包安装 GitLab 并汉化记录

系统环境 操作系统:CentOS 7GitLab:gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm 下载Omnibus安装包 使用国内镜像加速下载地址 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el......

admin_qing ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部