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>标 ...
随机推荐
- MMC卡是什么
MMC卡(Multimedia Card) 翻译成中文为“多媒体卡”.是一种快闪存储器卡标准.在1997年由西门子及SanDisk共同开发,技术基于东芝的NAND快闪记忆技术,因此较早期基于Intel ...
- Android中ViewStub组件使用
1. 概述: ViewStub组件和<include>标签的作用类似,主要是为了提高布局的重用性,及布局的模块化.它们之间最大的差别是,ViewStub中的布局不会随着它所在布局的渲染而渲 ...
- Oracle Spatial-元数据及SDO_GEOMETRY
一.空间表的元数据 将表的SDO_GEOMETRY列的所有对象作为一个空间层.Spatial需要对所有空间对象进行验证.创建索引和查询.此时需要为图层指定适当的元数据,该数据包含如下信息:维度.维度边 ...
- oracle 建表后添加表注释及字段注释
oracle添加表注释和表字段注释 创建Oracle数据库表时候加上注释 CREATE TABLE t1(id varchar2(32) primary key,name VARCHAR2(8) N ...
- python 【第四篇】:面向对象(一)
1.前言 提笔忘字,感慨良多!python自习前前后后有一年多了吧,貌似花了不少时间,其实没学到啥东西,都是在面向对象编程之前基础知识这块一直打转转,每次到了面向对象这块就感觉很蒙,看两天直接放弃,从 ...
- winds引导配置数据文件包含的os项目无效
我装了winds7与linux双系统,用easyBcd程序时,删除了一个winds7,之后winds7就进不去了, 进入winds7时显示winds未能启动,原因可能是最近更改了硬件或软件.解决此问题 ...
- at org.apache.jsp.index_jsp._jspInit(index_jsp.java:23)异常解决
部署项目,启动tomcat一切正常.输入项目地址后 tomcat报例如以下错误: java.lang.NullPointerException at org.apache.jsp.index_jsp. ...
- iOS_词典阵列 按key分组和排序
// // main.m // SortGroup // // Created by beyond on 14-10-26. // Copyright (c) 2014年 beyond.com All ...
- android部分控件应用解析
java中的接口回调机制图解 1. Adapter 接口概述 Adapter是一个顶层列表视图和底层数据的桥梁,通过adapter可以获取列表视图中所体现的数据条目,并且通过adapter可以为数 ...
- html5 绘制集合图形
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...