集合(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 集合对象的更多相关文章

  1. Asp.net MVC中提交集合对象,实现Model绑定

    Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现.有时候我们的Action方法中想要接收数组类 ...

  2. Set集合对象比较两个元素的方法

    Set集合对象比较两个元素的方法并不是根据“equals()”方法的返回值来比较.而是用“hashCode()”方法来进行判断.只要两个元素的“hashCode()”方法的返回值相同,就认为两个元素相 ...

  3. 转载---Java集合对象的深度复制与普通复制

    原博文:http://blog.csdn.net/qq_29329775/article/details/49516247 最近在做算法作业时出现了错误,原因是没有弄清楚java集合的深度复制和浅度复 ...

  4. Objective-C之集合对象的内存管理

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. Asp.net MVC中提交集合对象,实现Model绑定(转载)

    Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现.有时候我们的Action方法中想要接收数组类 ...

  6. JSon_零基础_004_将Set集合对象转换为JSon格式的对象字符串,返回给界面

    将Set集合对象转换为JSon格式的对象字符串,返回给界面 需要导入的jar包: 编写:servlet: package com.west.webcourse.servlet; import java ...

  7. JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面

    将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...

  8. java中对集合对象list的几种循环访问

    java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...

  9. 【转】关于spring集合对象的补充

    <span style="font-size:18px;">关于spring集合对象的补充 spring2.0中对集合对象有了改进,新增了一个<util>标 ...

随机推荐

  1. rsyslog 日志格式和输出

    日志格式: $EscapeControlCharactersOnReceive off #关闭rsyslog默认转译ASCII<32的所有怪异字符,包括换行符等 $template nginx- ...

  2. NOI2011 Day1

    NOI2011 Day1 兔农 题目描述:\(fib[1]=fib[2]=1, fib[i]=fib[i-2]+fib[i-1] (i\geq 3)\),若\(fib[i] \equiv 1(mod ...

  3. 剑指offer 25 二叉树中和为某一值的路径

    非递归方法: class Solution { public: vector<vector<int>> FindPath(TreeNode* root,int expectNu ...

  4. Unity3D-第一视角射击游戏

    一.新建关卡 File,Save Scene,File,New Scene,File,Save Scene as... ,Level02.unity 1.建立场景 从Assets中拖放场景模型到Hie ...

  5. c_str()

    1.string类成员函数c_str()的原型: const char *c_str()const;//返回一个以null终止的c字符串 2.c_str()函数返回一个指向正规c字符串的指针,内容和s ...

  6. System.Data.SQLite兼容32位和64位问题

    SQLite版本分的很详细,本机是64位在32位会出现问题,经过搜索找到解决方案. 这是我以前写的32位在我现在的机子上的运行报错. 类似这样的. 将当前说明文档的目录下的x64.x86目录和Syst ...

  7. 使用CSS3伸缩盒实现图片垂直居中

    用CSS实现图片垂直居中的方法有很多,针对移动端设备可以用CSS3伸缩盒来实现图片垂直居中. 代码如下: <div class="box"> <img src=& ...

  8. apk混淆打包注意事项

    混淆打包搞了好几天才初步了解,其中碰到很多Debug正常,Release的apk不能用,基本都是第三方的jar的问题,所以要排除混淆. 1. Json解析对象出错 用到fastJson或者GJson的 ...

  9. Android知识简单测试题

    上周去了一场Android考试,前面基础的题目很简单却答不上来,看过跟做过,懂了和会讲差距还是很大的,下面整理一下还记得的几个问题,自勉! 还是觉得,要好好看官方文档才是正道的啊! 1. Androi ...

  10. 使用jsp标签和java资源管理实现jsp支持多语言

    1.编写一个Serverlet并设置服务器启动是初始化该Servlet,并在初始化方法中实现对java的资源加载: DispatcherServlet.java package mypack; imp ...