NSSet 用法
//集合NSSet
//集合也是储存对象,和字典一样也是无序存储
//集合中里面的元素不能重复
//集合里面的元素可以随机取出
//用数组放到集合中
NSArray *a10 = @[p1 , p2 , p3 , p4 , p5];
NSSet *set1 = [NSSet setWithArray:a10];
//给集合放一个对象
NSSet *set2 = [NSSet setWithObject:p1];
//给集合放多个对象
//如果集合里面的元素相同了,会覆盖原来的那个
NSSet *set3 = [NSSet setWithObjects:p1 , p2 , p3 , p4 , nil];
//给集合放集合
NSSet *set4 = [NSSet setWithSet:set2];
NSLog(@"%@" , set4);
// 要打印集合中所有元素, 需要借助数组来完成
// 把集合里面的元素取出来 放大数组里面就可以循环打印
NSArray *array01 = [set3 allObjects];
for (int i = 0; i < [array01 count]; i++) {
NSLog(@"%@" , [array01 objectAtIndex:i]);
}
//既然集合里面的 元素是无序的,那么要想从集合中取出一个元素,这个元素肯定是随机的
//从集合里面随机取出一个元素
NSLog(@"*****************************************");
Person *p01 = [set3 anyObject];
NSLog(@"%@" , p01);
//能够放相同元素的集合
//NSCountedSet 集合中可以放相同的元素,并且能算出一个元素相同了多少次,也就是重复了多少次
NSCountedSet *set5 = [[NSCountedSet alloc] initWithObjects:p1 , p1 , p3 , p4 , p5 , p3 , p3 , p2 , p4 , p2 , nil];
//count 按照种类来分
NSLog(@"%ld" , [set5 count]);
//对集合中某一个元素种类计数
NSLog(@"%ld" , [set5 countForObject:p3]);
//可变集合
NSMutableSet *mset1 = [NSMutableSet setWithObjects:p5 , p3 , p2 , nil];
// 删除某个元素
[mset1 removeObject:p3];
[mset1 removeAllObjects];//删除多个元素
NSLog(@"%@" , mset1);
//三大容器总结
/*
一、相同点
都是容器 都能存储多个元素,存储的元素都必须是对象
二、不同点
1、特点
数组存储对象时有序的,元素可以重复
字典存在一一对应关系,键值对,key值必须唯一,不能重复
集合存储的院士是无序的,而且元素之间存在互异性
2、取值方面
数组 通过下标取值
字典 通过键值key进行取值
集合 通过anyObject随机取值
3、能否利用for循环
数组 直接利用for循环
字典 借助allkeys数组进行for循环遍历
集合 借助一个数组,把set集合中所有元素放进这个数组中
*/
NSArray *array02 = @[p2 , @"a" , p2 , @"b" , p1];
//循环打印数组所有元素,只打印字符串,不打印person对象
//isKindOfClass判断一个对象是否是某一类,或者这个类的子类
for (int i = 0; i < [array02 count];i++) {
id p = [array02 objectAtIndex:i];
//判断p是否是NSString类
if ([p isKindOfClass:[NSString class]]) {
// 如果是字符串久打印
NSLog(@"%@" , p);
}
}
//isMemberOfClass判断一个对象是否是一个类,不会判断子类
Student *s1 = [[Student alloc] initWithName:@"ddfdfjk" andAge:45];
Student *s2 = [[Student alloc] initWithName:@"dsfu" andAge:456];
NSArray *array03 = @[p2 , s1 , p2 , s2 , p1];
for (int i = 0; i < [array03 count];i++) {
id q = [array03 objectAtIndex:i];
//判断p是否是NSString类
if ([q isMemberOfClass:[Person class]]) {
// 如果是字符串久打印
NSLog(@"%@" , q);
}
}
NSSet 用法的更多相关文章
- NSArray / NSSet / NSDictory 三者的异同点
NSArray / NSSet / NSDictory 三者的异同点 NSArray 是一个有序对象的一个集合.相当于一个队列存储,可以有重复的数进去. NSSet 比较典型的一个HASH表(集合)算 ...
- NSSet、NSMutableSet基本用法
NSSet.NSMutableSet基本用法 在Foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素是无序,同一个对象只能保存一个. 一.不可变集合NSSet ...
- 用法总结:NSArray,NSSet,NSDictionary
用法总结:NSArray,NSSet,NSDictionary Foundation framework中用于收集cocoa对象(NSObject对象)的三种集合分别是: NSArray 用于对象有序 ...
- 用法总结:NSArray,NSSet,NSDictionary-备用
Foundation framework中用于收集cocoa对象(NSObject对象)的三种集合分别是: NSArray 用于对象有序集合(数组)NSSet 用于对象无序集合 (集合)NS ...
- Objective-C:NSSet和NSMutbaleSet的用法
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...
- NSArray,NSMutable和NSSet,NSMutableSet和NSDictionary,NSMutableDictionary用法
开始编写应用程序的代码时,可以利用大量的 Objective-C 框架.其中,为所有应用程序提供基本服务的 Foundation 框架尤为重要.Foundation 框架包括表示基本数据类型的值类(如 ...
- iOS多线程之8.NSOPeration的其他用法
本文主要对NSOPeration的一些重点属性和方法做出介绍,以便大家可以更好的使用NSOPeration. 1.添加依赖 - (void)addDependency:(NSOperation * ...
- QuartZ2D __ 简单用法 1
一. 简单做一个画板 1. 建立一个UIView类 2. 在.m里建立一个延展 3. 分别定义一个起点, 一个终点的结构体属性 . 在建立一个存储路径的数组 @interface DrawView ( ...
- iOS 线程安全之@synchronized的用法
@synchronized(self)的用法: @synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改.这个是objective-c的一个锁定令牌,防止self ...
随机推荐
- Struts中类型转换踩的坑
出现的异常: 当我输入的数据很大时候,转换后如上,这并不是我想要的, 出现问题的原因: Struts2对常用的数据类型如String.Integer.Double等都添加了转换器进行对应的转换操作. ...
- ASP获取上月本月下月的第一天和最后一天
上月第一天:<%=dateadd("m",-1,year(date)&"-"&month(date)&"-1" ...
- 我的Android进阶之旅------>关于android:layout_weight属性的一个面试题
最近碰到一个面试题,按照下图,由Button和EditText组成的界面下厨布局代码,解决这题目需要使用android:layout_weight的知识. 首先分析上图所示的界面可以看成一下3个部分. ...
- Cordova+FrameWork7开发简单教程
1: 环境要有:(一个不会搭建环境的程序员,要么学,要么退出编程 ) 环境这里我只说需要什么: 1>AndroidStudio 3.0 (2.几的版本总会出问题.我喜欢用新版本) 2>co ...
- Web Service概念辨析
Web Service包含两个概念. 其一是Web Service标准体系,由SOAP.WSDL.UDDI三要素组成,是平台和语言无关的.在这个概念里和WCF做比较是错误的,因为前者是行业标准,后者是 ...
- Django模型系统——ORM
一.概论 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描 ...
- ubuntu service XXX start启动报start: Rejected send message, 1 matche
service cron restart命令报错如下: stop: Rejected send message, 1 matched rules; type="method_call&quo ...
- Vue组件通信(传值)
先介绍一下什么是组件把: 创建组件的两种方式: 全局组件 // 组件就是vue的一个拓展实例 let component=Vue.extend({ data(){ return{ //与vue实例中的 ...
- web框架详解之tornado 三 url和分页
一.代码目录构建 controllers :处理业务逻辑的 account:处理账户相关的 上面目录作用和内容 controllers 包 :处理业务逻辑的 account:处理账户相关的 home ...
- debian下蓝牙适配器的配置和使用
本文打算将蓝牙适配器和手机蓝牙进行配对. 买了个支持蓝牙4.0协议的蓝牙适配器,将其插入到pc(debian 7.4)的usb口. 查看手机蓝牙信息: 选择手机中"设置"-> ...