Objective-C 的 NSDictionary 的 Java 等价物是啥?

Posted

技术标签:

【中文标题】Objective-C 的 NSDictionary 的 Java 等价物是啥?【英文标题】:What is the Java equivalent of Objective-C's NSDictionary?Objective-C 的 NSDictionary 的 Java 等价物是什么? 【发布时间】:2011-11-14 21:29:54 【问题描述】:

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

谢谢

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

由于Foundation是开源的,你也可以在apple的网站上查看实现细节。在 CFDictionary.c 下查看,但 CFDictionary.h 也有一些有趣的文档:opensource.apple.com/source/CF/CF-1153.18【参考方案2】:

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

【讨论】:

那么,Map 与接受的答案有什么区别【参考方案3】:

诚然,我是 android 新手,但对我来说,ContentValues 似乎是最接近 NSDictionary 的东西。

【讨论】:

很接近但不能存储任何对象作为值(基本上只能存储数字或字符串,不能存储复杂对象)

以上是关于Objective-C 的 NSDictionary 的 Java 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Apple Watch 和 openParentApplication 在后台

NSDictionary 中数组中的 NSArray

Foundation框架中的NSFileManager二

UINavigationController 标题外观设置器不起作用?

如何区分 CoreData 中的布尔值和 NSNumber

了解通用链接委托方法及其在 iOS 中的用途