Java中与Objective-C的NSDictionary相对应的是什么?

27

什么是在Java中最接近Objective-C的NSDictionary实现?对我而言,看起来像是HashMap<String, Object>,但我对Objective-C非常陌生。

谢谢。

3个回答

26

NSDictionary 是一个类族 (参见Cocoa基础指南中的“类族”一节),这意味着实际实现对于 API 用户是隐藏的。事实上,Foundation 框架会根据数据量等运行时信息选择适当的实现方式。此外,NSDictionary 可以使用任何 id 作为键,而不仅仅是 NSString(当然,键对象的 -hash 必须是常数)。

因此,最接近的类比可能是 Map<Object,Object>


由于Foundation是开源的,你也可以在苹果网站上查看实现细节。请查看CFDictionary.c文件,但CFDictionary.h文件还有一些有趣的文档:http://www.opensource.apple.com/source/CF/CF-1153.18/ - rwyland

13

对于实际应用: HashMap<String, Object> 是一个简单的非并行字典的选择。 然而,如果你需要一个线程安全(原子)的数据结构,你需要使用 HashTable<String, Object> 它是线程安全的,但是需要注意的是它不支持 null 作为有效值或键。


2
那么,与被接受的答案中的Map<Object, Object>有什么区别呢? - Jonny

1

我承认我是一个 Android 新手,但对我来说 ContentValues 似乎是最接近 NSDictionary 的东西。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接