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 在后台