Objective-c 集合对象
集合(NSSet)是一组单值对象的组合,集合对象的操作包括:搜索,添加,删除集合中的成员(可变集合的功能),比较两个集合,计算两个集合的交集,并集等。
下面来看下(NSSet)的方法:

1)集合的构建
// 构建集合的三种方法
#import <Foundation/Foundation.h>
int main(int argc , const char *argv[]){
@autoreleasepool {
NSSet *set1 = [NSSet setWithObjects:@"zhangsan",@"lisi",@"wangwu",nil];
for(NSString *temp1 in set1){
NSLog(@"temp1 = %@",temp1);
}
NSArray *array = @[@"aa",@"bb",@"cc"];
NSSet *set2 = [NSSet setWithArray:array];
for(NSString *temp2 in set2)
NSLog(@"temp2 = %@",temp2);
NSSet *set3 = [[NSSet alloc] initWithObjects:@"aa",@"bb"@"cc",nil];
for(NSString *temp3 in set3)
NSLog(@"temp3 = %@",temp3);
}
}
2)集合的遍历
#import <Foundation/Foundation.h> @interface NSString (print) - (void)print;
- (void)show:(NSString *)str; @end @implementation NSString (print) - (void)print{
NSLog(@"%@",self);
}
- (void)show:(NSString *)str{
NSLog(@"%@ : %@",str,self);
} @end
int main(int argc , const char *argv[]){
@autoreleasepool {
NSSet *set = [NSSet setWithObjects:@"zhangsan",@"lisi",@"wangwu",nil];
for(NSString *temp in set)
NSLog(@"temp = %@",temp); NSLog(@"--------------------------");
[set enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
NSLog(@"obj = %@",obj);
}]; NSLog(@"---------------------------");
[set makeObjectsPerformSelector:@selector(print)]; NSLog(@"----------------------------");
[set makeObjectsPerformSelector:@selector(show:) withObject:@"this is "]; NSLog(@"-----------------------------");
NSEnumerator *emr = [set objectEnumerator];
NSString *temp = nil;
while(temp = [emr nextObject])
NSLog(@"temp = %@",temp);
}
return ;
}
3) 集合的比较
#import <Foundation/Foundation.h>
int main(int argc , const char *argv[]){
@autoreleasepool {
NSSet *set = [NSSet setWithObjects:@"zhangsan",@"lisi",@"wangwu",nil];
for(NSString *temp in set)
NSLog(@"temp = %@",temp);
BOOL ishas = [set containsObject:@"lisi"];
if(ishas)
NSLog(@"has lisi");
else
NSLog(@"no lisi");
NSString *str = [set member:@"aaaa"];
NSLog(@"str = %@",str);
NSSet *set2 = [set setByAddingObject:@"xiaoliu"];
NSLog(@"set2 = %@",set2);
NSSet *set3 = [set setByAddingObjectsFromArray:@[@"aa",@"bb",@"cc"]];
NSLog(@"set3 = %@",set3);
NSSet *set4 = [NSSet setWithObjects:@"zhangsan",@"lisi",nil];
BOOL issub = [set4 isSubsetOfSet:set];
if(issub)
NSLog(@"set4 is set sub class");
else
NSLog(@"set4 no set sub class");
BOOL isinterset = [set intersectsSet:set4];
if(isinterset)
NSLog(@"set and set4 has intersect");
else
NSLog(@"set and set4 no intersect");
BOOL isequal = [set isEqualToSet:set2];
if(isequal)
NSLog(@"set = set2");
else
NSLog(@"set != set2");
}
return ;
}
4)可变集合(NSMutable)

下面通过一个例子来说可变集合的用法:
#import <Foundation/Foundation.h> @interface NSString (print)
-(void)print;
-(void)show:(NSString *)str;
@end @implementation NSString(print)
-(void)print{
NSLog(@"%@",self);
}
-(void)show:(NSString *)str{
NSLog(@"%@ : %@",str,self);
}
@end int main(int argc,char **argv){
@autoreleasepool {
NSMutableSet *mset = [NSMutableSet setWithObjects:@"zhangsan",@"lisi",@"wangwu", nil]; [mset addObject:@"zhaoliu"];
NSLog(@"mset = %@",mset); [mset addObjectsFromArray:@[@"",@"",@""]];
NSLog(@"mset = %@",mset); [mset removeObject:@""];
NSLog(@"mset = %@",mset); NSSortDescriptor *sortdesr = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES];
NSArray *sortset = [mset sortedArrayUsingDescriptors:@[sortdesr]];
NSLog(@"mset sort = %@",sortset); NSArray *array = [mset allObjects];
NSLog(@"array = %@",array);
NSSet *set2 = [NSSet setWithArray:array];
NSLog(@"set2 = %@",set2); NSString *str = [mset anyObject];
NSLog(@"str = %@",str); [mset setSet:set2];
NSLog(@"mset = %@",mset); [mset removeAllObjects];
NSLog(@"mset = %@",mset);
}
}
Objective-c 集合对象的更多相关文章
- Asp.net MVC中提交集合对象,实现Model绑定
Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现.有时候我们的Action方法中想要接收数组类 ...
- Set集合对象比较两个元素的方法
Set集合对象比较两个元素的方法并不是根据“equals()”方法的返回值来比较.而是用“hashCode()”方法来进行判断.只要两个元素的“hashCode()”方法的返回值相同,就认为两个元素相 ...
- 转载---Java集合对象的深度复制与普通复制
原博文:http://blog.csdn.net/qq_29329775/article/details/49516247 最近在做算法作业时出现了错误,原因是没有弄清楚java集合的深度复制和浅度复 ...
- Objective-C之集合对象的内存管理
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Asp.net MVC中提交集合对象,实现Model绑定(转载)
Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现.有时候我们的Action方法中想要接收数组类 ...
- JSon_零基础_004_将Set集合对象转换为JSon格式的对象字符串,返回给界面
将Set集合对象转换为JSon格式的对象字符串,返回给界面 需要导入的jar包: 编写:servlet: package com.west.webcourse.servlet; import java ...
- JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面
将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...
- java中对集合对象list的几种循环访问
java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...
- 【转】关于spring集合对象的补充
<span style="font-size:18px;">关于spring集合对象的补充 spring2.0中对集合对象有了改进,新增了一个<util>标 ...
随机推荐
- Delphi 对泛型TList的的改进(TSimpleList)
TList 有一个比较麻烦的问题是,到底由谁来释放List中的对象或指针. 本例将释放任务教给 TSimpleList ,方便使用. 如果 TList 为于管理对象,还可以实现 AddNewOne 功 ...
- cocos2d-x创建场景
今天开始学习Cocos2d-x,使用的版本是2.1.4,这个版本比较老,对应的参考资料也比较齐全. 在mac/xcode环境下,代码是写在Classes文件夹下的,和iOS应用类似,程序从AppDel ...
- css3幻灯片换位效果
<title>css3幻灯片换位效果</title> <style type="text/css"> .flowGallery {width: ...
- 关于 FPGA 和 外部芯片接口时序设计
在看这篇文章之前, 建议先好好读下这篇文章.http://download.csdn.net/detail/angelbosj/8013827. 因为我不太会用 VISio.要是哪位网友能告诉我.怎么 ...
- PowerBuilder预防数据库死锁相关处理
实际业务中碰到了PB开发的业务系统造成的数据死锁情况,整理了一些PB关于数据库死锁的一些处理. PB死锁相关 1. 即时的commit和rollback 不同数据库的锁机制各不相同,但对应用程序来说, ...
- [工具] XMind
XMind是一款非常实用的思维导图软件, 高效易用的可视化思维软件; 通过XMind可以随时开展头脑风暴, 帮助人们快速理清思路, XMind可绘制的思维导图, 鱼骨图, 二维图, 树形图, 逻辑图, ...
- A - FatMouse' Trade
Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the wareho ...
- Deep Learning for NLP学习翻译笔记(2)
Deep Learning for NLP Deep Learning for NLP Lecture 2:Introduction to Teano enter link description h ...
- [C++]让CPU使用率曲线呈现为正弦曲线(一)
看<编程之美>的第一题就很有意思: 写一个程序,让用户来决定Windows任务管理器的CPU占用率.可以实现下面三种情况: 1. CPU的占用率固定在50%,为一条直线: 2. CPU的占 ...
- Qt程序打包成exe可执行文件图文教程(图文并茂,且用到了filepack)
很多Qt爱好者想发布自己的Qt软件,但却发现在其他没有安装Qt SDK的机器上无法运行,这就是本文想要说明的问题.现在网上大部分软件都要发布自己开发的应用程序,都会打包到exe文件中,待安装完exe文 ...