NSDictionary , NSMutableDictionary, NSMutableDictionary 和 NSMutableSet)相当于java的map、set
1 NSDictionary 和 NSMutableDictionary
NSDictionary :就是java中的map; 放入对象是键值对 key-value , 同样 秉持了一样的原则,只能放入对象,不可本体增删改;
(1)初始化方法
- + dictionaryWithObject:forKey:
- + dictionaryWithObjects:forKeys:
- + dictionaryWithObjectsAndKeys:
这三个是最常用的吧,注意是对象在前,key在后
2 访问 key和value
Accessing Keys and Values
- – allKeys
- – allKeysForObject:
- – allValues
- – objectForKey:
allKeys返回所有的key, allValues返回所有的value
- – allKeysForObject:
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"man1",@"11",@"wom",@"22",@"kid",@"33",@"man1",@"44",nil];
NSArray *array = [dic2 allKeysForObject:@"man1"];
NSLog(@"%@",array);由上代码可知,allKeysForObject是返回指定对象中所有这个和这个对象配对的key(一个字典或者是java中的map key是唯一的 可是value却不是).
3 枚举字典
Enumerating Dictionaries
- – keyEnumerator
- – objectEnumerator
- – enumerateKeysAndObjectsUsingBlock:
enumerateKeysAndObjectsWithOptions:usingBlock:
以上几种的方法主要都是获取这个字典里的值,相当于for吧 不过比for效率高,毕竟官方封装的方法
NSDictionary *nsd = [NSDictionary dictionaryWithObjectsAndKeys:@"萌妹子",@"1",@"御姐",@"2",@"女汉子",@"3", nil];
[nsd enumerateKeysAndObjectsWithOptions:NSEnumerationReverse usingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@ - %@" ,key,obj);
}];NSEnumerator *en = [nsd keyEnumerator];
id string;
while (string = [en nextObject]) {
NSLog(@"%@-%@",string,[nsd objectForKey:string]);
}先说 – keyEnumerator – objectEnumerator 这是获取字典中的全部的key 或者 object 注意他们是 NSEnumerator 类型的
这个类型只有一个方法 nextObject 它我觉得就是把对象按链表的方式存起来 让你一个个读.
- – enumerateKeysAndObjectsUsingBlock:
enumerateKeysAndObjectsWithOptions:usingBlock:
然后就是这两个 它俩其实一样 只不过第二个比第一个少一个参数
NSSortOptions 这是个枚举值 ,它的作用是设定取KEY的顺序 (NSSortConcurrent 是正序 ,NSSortStable 反序)
enum {
NSSortConcurrent = (1UL << 0),
NSSortStable = (1UL << 4),
};
(这儿有了个疑问,字典存放不是无序的么 怎么还分正反,后来想了想,可能是为了在同一个方法或者这个字典的生命周期里确定吧,
毕竟这个字典创建后,那些键值对还是按照某个顺序存在的);
NSMutableDictionary
同样 这是一个可变的字典 那么它就和java中的map基本相同了
Creating and Initializing a Mutable Dictionary
- + dictionaryWithCapacity:
- – initWithCapacity:
- + dictionaryWithSharedKeySet:
Adding Entries to a Mutable Dictionary
- – setObject:forKey:
- – setObject:forKeyedSubscript:
- – setValue:forKey:
- – addEntriesFromDictionary:
- – setDictionary:
Removing Entries From a Mutable Dictionary
- – removeObjectForKey:
- – removeAllObjects
- – removeObjectsForKeys:
上面的几个方法都没什么好说的,不得不说苹果的命名机制很好,见名知意.
2 NSSet 和 NSMutableSet
NSSet 就是一个只能存放唯一值的集合,不知道OC中是在呢么实现的,java是判断hash码,我估计oc也差不多.
它一样的创建后 无法改变
- – allObjects
- – anyObject
- – containsObject:
这几个是获取里面的对象的 第一个是获取全部的,第二个是获取一个随机的(说是随机 其实就是第一个,
不过set是随机存储,那么也可以理解为随机了,可是同一个生命周期内取到的都是同一个值)
见代码!
NSSet *set = [NSSet setWithObjects:@"123",@"456",@"789", nil];
NSArray *ns = [set allObjects];
id na = [set anyObject];
BOOL a = [set containsObject:@"123"];
NSLog(@"%@,%@,%d",ns,na,a);输出是2013-08-08 20:45:01.846 NSSetAndNSDic[1886:303] (
123,
456,
789
),123,1想判断是否包含某个对象还有一个方法
– member:
NSString *b = [set member:@"456"];
NSLog(@"%@",b);这就是我觉得比较重要的几个 剩下的见名知意
NSMutableSet
- – unionSet:
- – minusSet:
第一个是将两个set融合 ,第二个是删除两个集合中相同的
NSMutableSet *set = [NSMutableSet setWithObjects:@"123",@"456",@"789", nil];
NSMutableSet *set2 = [NSMutableSet setWithObjects:@"abc",@"def",@"hij", nil];
NSMutableSet *set3 = [NSMutableSet setWithObjects:@"hjk",@"789", nil];
[set unionSet:set2];
NSLog(@"%@",set);
[set minusSet:set2];
NSLog(@"%@",set);
[set minusSet:set3];
NSLog(@"%@",set);输出:
2013-08-08 21:00:59.885 NSSetAndNSDic[1920:303] {(
123,
789,
abc,
hij,
456,
def
)}
2013-08-08 21:00:59.887 NSSetAndNSDic[1920:303] {(
123,
789,
456
)}
2013-08-08 21:00:59.887 NSSetAndNSDic[1920:303] {(
123,
456
)}补充:
还有一个for in的用法,我觉得就是java中的超强循环 for each 一个样只要是 array set Dictionary 都能用NSDictionary *nsd2 = [NSDictionary dictionaryWithObjectsAndKeys:@"萌妹子",@"1",@"御姐",@"2",@"女汉子",@"3", nil]; for (id key in nsd2) {
NSLog(@"%@",[nsd objectForKey:key]);
}没什么好说的,知道有这个简便用法,和for一样
NSDictionary , NSMutableDictionary, NSMutableDictionary 和 NSMutableSet)相当于java的map、set的更多相关文章
- 字典NSDictionary以及NSMutableDictionary的用法总结
做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典 ...
- 词典对象 NSDictionary与NSMutableDictionary
做过Java语言或者 C语言开发的朋友应该很清楚关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便,是一种非常常用的数据结构.在Objecti ...
- (转载)目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结
文章转载自:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键 ...
- 【转】目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结 -- 不错
原文网址:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字 ...
- OC中Foundation框架之NSDictionary、NSMutableDictionary
NSDictionary概述 NSDictionary的作用类似:通过一个key ,就能找到对应的value 同样 NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改 NSDic ...
- Objective-C语法之NSDictionary和NSMutableDictionary
Java 有Map,可以把数据以键值对的形式储存起来,取值的时候通过key就可以直接拿到对应的值,方便快捷.在Objective-C语言中,词典就是做这样的事情的,和NSArray一样,一个词典对象也 ...
- 词典对象(NSDictionary和NSMutableDictionary)
词典(dictionary)顾名思义就是同由键-值组成的数据集合.与在词典中查找单词定义一样,可以通过对象的键从词典中获取需要的对象,看到 这里,你是不是想起了java中的map?和NSArray一样 ...
- 黑马程序员-NSDictionary和NSMutableDictionary
NSDictionary和NSMutableDictionary:通过key和value进行对应,进行存储元素,能够方便提取所需的元素.key是不能够重复出现,但是value能够重复出现.NSDict ...
- OC第四节——NSDictionary和NSMutableDictionary
NSDictionary 1.什么是字典 字典是也是一种集合结构,功能与我们现实中的字典工具一样 2.字典的元素是什么 任意类型的对象地址构成键值对 3. ...
随机推荐
- oracle命令生成AWR报告
--命令生成AWR报告oracle@linux:~> sqlplus / as sysdba SQL*Plus: Release 11.1.0.7.0 - Production on Fri A ...
- 批量生成AWR报告(转载总结)
[前提] 对Oracle进行性能分析其中一个“帮手”就是Oracle的AWR报告 PS:Oracle的企业版才有AWR报告,标准版是没有的{可以导出来,但是没有数据显示} [需求] 当需要针对某个月的 ...
- 关于JavaScript中实现继承,及prototype属性
感谢Mozilla 让我弄懂继承. JavaScript有八种基本类型,函数属于object.所以所有函数都继承自object.//扩展:对象,基本上 JavaScript 里的任何东西都是对象,而且 ...
- 深度学习方法(十一):卷积神经网络结构变化——Google Inception V1-V4,Xception(depthwise convolution)
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.机器学习技术感兴趣的同学加入. 上一篇讲了深度学习方法(十) ...
- [tensorflow]的安装
1 pip install 最简单直接的方法,通过pip install安装,命令如下: pip install tensorflow-gpu //安装gpu版tensorflow pip insta ...
- NIO-3网络通信(非阻塞)
import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import ja ...
- Web前端开发最佳实践(5):正确闭合HTML标签,停止使用不标准的标签和属性
正确闭合HTML标签 HTML元素的内容模型定义了元素的结构,表明元素可以包含哪些内容以及元素可以有哪些属性.元素可以包含的内容包括其他元素和字符,但是也有一些元素是空元素,即不能包含任何内容,这些元 ...
- Asp.net vNext 学习之路(二)
View component(视图组件)应该是MVC6 新加的一个东西,类似于分部视图.本文将演示在mvc 6中 怎么添加视图组件以及怎么在视图中注入一个服务. 本文包括以下内容: 1,创建一个新的a ...
- XML和HTML的区别
1.很多新手程序员总是会问HTML和XML有什么区别,接下来就解释一下: 什么是XML? XML 指可扩展标记语言(EXtensible Markup Language). XML 是一种很像HTML ...
- UWP数据分享
前言 本文介绍如何在通用Windows平台(UWP)应用程序中支持共享合同.共享合同是一种在应用程序之间快速共享数据(如文本,链接,照片和视频)的简便方法.例如,用户可能想要使用社交网络应用与他们的朋 ...