Что является Java-эквивалентом NSDictionary в Objective-C? - PullRequest
27 голосов
/ 15 ноября 2011

Какова наиболее близкая реализация Objective-C NSDictionary в Java?Для меня это выглядит как HashMap<String, Object>, но я очень плохо знаком с Objective-C.

Спасибо

Ответы [ 3 ]

26 голосов
/ 15 ноября 2011

NSDictionary - это кластер классов (см. Раздел «Кластер классов» в Руководстве по основам какао ), означающий, что фактическая реализация скрыта от вас, пользователя API. Фактически, платформа Foundation будет выбирать подходящую реализацию во время выполнения на основе объема данных и т. Д. Кроме того, NSDictionary может принимать любой id в качестве ключа, а не только NSString (конечно, -hash ключевого объекта должен быть постоянным).

Таким образом, ближайший аналог, вероятно, Map<Object,Object>.

13 голосов
/ 15 ноября 2011

Для практического использования: HashMap<String, Object> будет подходить для простого непараллельного словаря. Однако, если вам нужно что-то поточно-безопасное (атомарное), вам придется использовать HashTable<String, Object> который является потокобезопасным, но, что особенно важно, не принимает значение null в качестве допустимого значения или ключа.

1 голос
/ 24 марта 2015

По общему признанию, я новичок в Android, но мне ContentValues ​​, кажется, ближе всего к NSDictionary.

...