Object-C,NSSet,不可变集合
又到晚上了,继续码代码。
正在此时,老爸一个电话”海阔凭鱼跃,天高任鸟飞“,老爸不在为老问题烦我了。
自由了,突然感觉压力好大啊。
将来混的太惨,可咋办啊~
第1个例子是,不可变集合。
Set集合,概念是通用的,无非是和Java中的java.util.Set语法不一致,方法的个数不一致罢了。
集合的核心特征,就是元素不会重复,是否重复根据元素的hashCode和equals方法来定。
代码
//
// main.m
// NSSetTest
//
// Created by fansunion on 15/12/3.
// Copyright (c) 2015年 demo. All rights reserved.
//#import <Foundation/Foundation.h>
//定义一个函数,可以把Array或者NSSet集合转换为字符串
NSString* NSCollectionToString(id collection){NSMutableString* str = [NSMutableString stringWithString:@"["];//使用for-each循环语法,遍历集合for(id obj in collection){[str appendString:[obj description]];[str appendString:@", "];}//获取字符串长度,去掉最后2个多余的字符NSUInteger length = [str length];[str deleteCharactersInRange:NSMakeRange(length-2, 2)];[str appendString:@"]"];return str;
}//NSSet是不可变集合,可变集合是NSMutableSet。
//与NSArray,NSMutableArray一个鸟样
int main(int argc, const char * argv[]) {@autoreleasepool {//构造4个元素的集合,其中2个是重复的NSSet* set1 = [NSSet setWithObjects:@"A", @"B",@"C",@"B",nil];NSLog(@"The set1 count :%ld",[set1 count]);NSLog(@"The set1 :%@",NSCollectionToString(set1));//set1是不可变集合NSSet* set2 =[set1 setByAddingObject:@"D"];NSLog(@"The new set1 :%@",NSCollectionToString(set1));NSLog(@"The set2 :%@",NSCollectionToString(set1));BOOL isSubSet =[set1 isSubsetOfSet:set2];NSLog(@"The set1 is subSet of set2:%d",isSubSet);BOOL have = [set1 containsObject:@"C"];NSLog(@"The set1 has C:%d",have);}return 0;
}
运行结果
2015-12-03 20:16:52.049 NSSetTest[5903:419290] The set1 count :3
2015-12-03 20:16:52.050 NSSetTest[5903:419290] The set1 :[A, B, C]
2015-12-03 20:16:52.050 NSSetTest[5903:419290] The new set1 :[A, B, C]
2015-12-03 20:16:52.051 NSSetTest[5903:419290] The set2 :[A, B, C]
2015-12-03 20:16:52.051 NSSetTest[5903:419290] The set1 is subSet of set2:1
2015-12-03 20:16:52.051 NSSetTest[5903:419290] The set1 has C:1
Program ended with exit code: 0
照目前这个学习进度,2017年之前,初步掌握Object-C和iOS,是没啥问题的。
转载于:https://www.cnblogs.com/qitian1/p/6462546.html
Object-C,NSSet,不可变集合相关推荐
- 不可变集合相比可变集合_简单的基准测试:不可变集合VS持久集合
不可变集合相比可变集合 通常,您需要向集合中添加新元素. 因为您是一个优秀而谨慎的开发人员,所以您希望尽可能保持不变. 因此,向不可变集合中添加新元素将意味着您必须创建一个新的不可变集合,其中包含原始 ...
- 简单的基准测试:不可变集合VS持久集合
通常,您需要向集合中添加新元素. 因为您是一个优秀而谨慎的开发人员,所以您希望尽可能保持不变. 因此,向不可变集合中添加新元素将意味着您必须创建一个新的不可变集合,其中包含原始集合的所有元素以及新元素 ...
- python中可变集合set和不可变集合frozenset的区别
序言 集合是不同元素的无序集合.与序列类型不同(如列表,字符串等),集合是没有切片操作的. 集合分为两种类型: set -- 可变集合.集合中的元素可以动态的增加或删除. frozenset -- 不 ...
- [转载] Python中不可变集合的使用frozenset()方法
参考链接: Python Frozenset() 使用frozenset()方法,将集合变为不可变集合,不可以修改其中的元素.例如: >>> num3 = frozenset([1, ...
- Scala 可变集合体系、不可变集合体系 详解
文章目录 Scala数据结构的特点 1. Scala的集合基本介绍 2. 可变集合和不可变集合举例 不可变集合继承层次--览图 可变集合继承层次--览图 数组-定长数组(声明泛型) 1. 第一种方式定 ...
- Java SE基础知识详解第[13]期—不可变集合、Stream流、异常
写在前面: 每一个不曾起舞的日子,都是对生命的辜负. 希望看到这里的每一个人都能努力学习,不负韶华,成就更好的自己. 以下仅是个人学习过程中的一些想法与感悟,Java知识博大精深,作为初学者,个人能力 ...
- 不可变集合、Stream、异常
1.不可变集合 不可变集合,就是不可被修改的集合. 集合的数据项在创建的时候提供,并且在整个生命周期中都不可改变.否则报错. 创建不可变集合: 如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是 ...
- 黑马笔记---创建不可变集合与Stream流
目录 1.不可变集合 1.1什么是不可变集合? 1.2如何创建不可变集合? 总结: 2.Stream流 2.1Stream流的概述 什么是Stream流? 案例:Stream流的作用 Stream流式 ...
- JavaSE基础笔记——不可变集合简介、Stream流体系、异常处理
1.不可变集合简介 不可变集合,就是不可被修改的集合. 集合的数据项在创建的时候提供,并且在整个生命周期中都不可改变.否则报错. 为什么要创建不可变集合? 如果某个数据不能被修改,把它防御性地拷贝到不 ...
- javase加强(七、 不可变集合、Stream、异常)
文章目录 不可变集合 Stream流 Stream流的常用API(中间操作方法) Stream流案例: 收集Stream流: 异常 编译时异常的处理形式 不可变集合 不可变集合:集合的数据在创建时提供 ...
最新文章
- java连接pg_postgresql 入门(含java、scala连接代码)
- 机器学习中的参数与非参数方法
- UVALive 4035 - Undetectable Tour(并查集)
- 分布式内存数据库---Redis操作String、list、set、hash和Zset
- 倒计时5天!云栖大会低代码峰会即将开幕!
- 浅谈PVID和VID区别
- flash跨域访问解决办法
- 十道清肠素食,满满的都是膳食纤维!
- 刪除主表中不存在記錄的從表資料
- 基于 pureXML 技术的数据库表结构扩展
- vim 编辑器常用命令
- 关于Adobe fireworks cs6
- 微信小程序demo测试实践
- 音视频开发系列(10):基于qt的音频推流
- Restful风格详解
- 红帽:商业模式比技术更重要
- 手机也可以快速翻译、PDF翻译超简单
- Android Interpolator属性 设置动画速度
- linux挂载的硬盘为ro,remount成rw出错问题解决
- 粒子群算法(PSO) 介绍
热门文章
- 使用docker-compose 大杀器来部署服务 上(转)
- Yann LeCun说是时候放弃概率论了,因果关系才是理解世界的基石
- 【思路】Gym - 101173F - Free Figurines
- AMD已秒英特尔全家?真的吗?来看看真正公平公正的版本吧!
- java中class.forName和classLoader加载类的区分
- hadoop核心框架简介
- discuz清空session,导致session保存机制失败,session无法更新与解决
- 学习MVC3(二)——创建自己的第一个网页:实现用户登陆(1)
- 关于定时器setInterval()累加或者是重叠的问题
- ln 创建软链接硬链接命令