集合(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. Form Presonalization 表单个性化定义控制应用

    1.1.1   表单个性化定义 Oracle EBS 11.5.10所增加的Form Presonalization功能,是在对Form不进行开发的前提下,用一些系统内置的触发器,按照所设定的控制规则 ...

  2. Java程序员快速入门Go语言

    这篇文章帮助Java程序员快速入门Go语言. 转载至 开源中国社区. http://www.oschina.net 本文将以一个有代表性的例子为开始,以此让Java程序员对Go语言有个初步认识,随后将 ...

  3. Vxlan 原理

    https://www.gitbook.com/book/yeasy/openstack_understand_neutron/details 自己总结一下: 分析 VTEP的情况, 即Vxlan跟V ...

  4. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(四)

    通过前面的操作,我们已经可以创建一个带有我们自己的PCI的watchdog外设qemu 虚拟机了. 目的: 1. 了解我们的外设情况. 2. 为在guest中开发我们自己的linux PCI驱动程序做 ...

  5. collection系列用法-deque双向队列

    deque双向队列 Deque可以从两端添加和删除元素.常用的结构,是它的简化版本. Deque支持序列的常用操作,现在举一个简单例子,你会发现其实跟平成的list没啥区别: import colle ...

  6. HTML系列(七):多媒体

    一.video标签 H5新增了video实现在线播放视频的功能: 代码示例: <video controls="controls"> <source src=&q ...

  7. SQL Server 使用ROW_NUMBER()进行分页

    代码示例: WITH domain AS(SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) ids,* FROM dbo.DomainInfo) SELECT * ...

  8. java中关于SSL/TSL的介绍和如何实现SSL Socket双向认证

    一.        SSL概述 SSL协议采用数字证书及数字签名进行双端实体认证,用非对称加密算法进行密钥协商,用对称加密算法将数据加密后进行传输以保证数据的保密性,并且通过计算数字摘要来验证数据在传 ...

  9. Java通过JDBC链接数据库,数据库中wen

    连接数据库设置编码 jdbc:mysql://地址:3306/数据库名?characterEncoding=utf8

  10. oracle习题SQL语句练习

    表(一)Student (学生表) 属性名 数据类型 可否为空 含 义 Sno Varchar2(3) 否 学号(主码) Sname Varchar2(8) 否 学生姓名 Ssex Varchar2( ...