2011-11-14 45 views

回答

26

NSDictionary是一类集群(请参见“类簇”部分The Cocoa Fundamentals Guide),这意味着实际的实现是不可见的,API的用户。实际上,Foundation框架会根据数据量等选择合适的运行时间实现。另外,NSDictionary可以把任何id作为关键字,而不仅仅是NSString(当然,关键对象的-hash必须是常量) 。

因此,最接近的模拟可能是Map<Object,Object>

+0

由于Foundation是opensource,因此您也可以在Apple网站上查看实施细节。请在CFDictionary.c下查看,但CFDictionary.h也有一些有趣的文档:http://www.opensource.apple.com/source/CF/CF-1153.18/ – rwyland

13

实际应用: HashMap<String, Object>将成为一个简单的,非平行字典的方式。但是,如果您需要线程安全(原子)的东西,则必须使用线程安全的 HashTable<String, Object> ,但 - 特别是 - 不接受null作为有效值或密钥。

+0

是不是Hashtable过时了? – styler1972

+0

NSDictionary不保证线程安全。 –

+2

那么,从接受的答案中映射<对象,对象>有什么区别 – Jonny

1

我承认是Android新手,但对我来说ContentValues似乎是最接近NSDictionary

+0

它非常接近,但不能将任何对象存储为值(基本上,您只能存储数字或字符串,而不能存储复杂的对象) – Sylverb

相关问题