又到晚上了,继续码代码。

正在此时,老爸一个电话”海阔凭鱼跃,天高任鸟飞“,老爸不在为老问题烦我了。

自由了,突然感觉压力好大啊。

将来混的太惨,可咋办啊~

第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,是没啥问题的。

Object-C,NSSet,不可变集合的更多相关文章

  1. .NET不可变集合已经正式发布

    微软基础类库(Base Class Library)团队已经完成了.NET不可变集合的正式版本,但不包括ImmutableArray.与其一起发布的还包括针对其它不可变对象类型的设计指南. 如果你需要 ...

  2. [Guava源码分析]ImmutableCollection:不可变集合

    摘要: 我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3888557.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的 ...

  3. 速查 objc中可变集合和不可变集合的遍历性能

    次数 : 5,000,000 NSMutableArray //0.131999/0.116085/0.112128 NSArray //0.116842/0.111675/0.108623 NSMu ...

  4. 什么是可变参数?如何创建不可变集合?Steam三类方法是什么?获取流方法特点?流中间方法特点?终结流方法特点?

    ==知识梳理== ==重难点梳理== ==今日目标== 1.能够了解什么是可变参数 2.能够了解如何去创建不可变集合 3.能够掌握Stream流的使用 ==知识点== 1.可变参数 2.Stream流 ...

  5. Java源码分析:Guava之不可变集合ImmutableMap的源码分析

    一.案例场景 遇到过这样的场景,在定义一个static修饰的Map时,使用了大量的put()方法赋值,就类似这样-- public static final Map<String,String& ...

  6. java 集合Collections 工具类:排序,查找替换。Set、List、Map 的of方法创建不可变集合

    Collections 工具类 Java 提供1个操作 Set List Map 等集合的工具类 Collections ,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集合 ...

  7. 在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?

    在sql server中建存储过程,如果需要参数是一个可变集合的处理 原存储过程,@objectIds 为可变参数,比如 110,98,99 ALTER PROC [dbo].[Proc_totalS ...

  8. Guava学习笔记:Immutable(不可变)集合

    不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客 ...

  9. 不可变集合 Immutable Collections

    例子 public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of( "red", &q ...

随机推荐

  1. 学习SCSS

    目录 变量 嵌套 引入 混合 继承 操作符 CSS扩展 嵌套属性 标签(空格分隔): 未分类 变量 变量用来存储需要在CSS中复用的信息,例如颜色和字体.SASS通过$符号去声明一个变量. $font ...

  2. jquery 将函数作为参数传递

    等待执行函数 这是自己封装的layui的询问框 //------[询问框](parameter:执行函数的参数,f_name:执行函数,msg:提示,time:自动消失时间,btn_arr:按钮组,o ...

  3. Ajax兼容性问题

    对于IE7及以上直接使用 XMLHttpRequest 就行,但对于过老版本IE建议直接提示用户下载新版浏览器更佳.或者用以下代码兼容IE6: function CreateXHR() { if(XM ...

  4. linux内核(五)虚拟文件系统

    虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备. 虚拟文件系统本身是linux内核的一部分,是纯软件 ...

  5. java源码之TreeMap

    Map的单元是对键值对的处理,之前分析过的两种Map,HashMap和LinkedHashMap都是用哈希值去寻找我们想要的键值对,优点是理想情况下O(1)的查找速度. 那如果我们在一个对查找性能要求 ...

  6. Spring中 @Autowired标签与 @Resource标签 的区别(转)

    spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解,如:@Resource. @PostConstruct及@PreDestroy. 1. @Autowi ...

  7. npm API文档

    npm API文档 https://docs.npmjs.com/

  8. Solaris 10 改ip參考文档之二

    參考自:Cannot change IP address of Solaris[TM] 10 host (Doc ID 1007942.1) 本文不做翻译.全文转载. Symptoms Changin ...

  9. JS,Javascript加载与函数执行过程

    Js,Javascript加载与函数执行过程 test.html <!DOCTYPE HTML> <html lang="en"> <head> ...

  10. zzulioj--1780--和尚特烦恼6——炒股(贪心)

    1780: 和尚特烦恼6--炒股 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 154  Solved: 87 SubmitStatusWeb Boa ...