Что будет хранить список Key-Value в Java или альтернативу C # IDictionary в Java? - PullRequest
5 голосов
/ 09 ноября 2011

Я новичок в Java-разработке, я из C # .net, занимаюсь разработкой приложений для Android.

Я ищу список значений ключей для использования в Java так же, как IDictionary в C #.

Спасибо

Ответы [ 5 ]

9 голосов
/ 09 ноября 2011

Используйте Map<K, V> интерфейс и HashMap<K, V> класс , например. Или обратитесь к разделу «Все известные подинтерфейсы» в описании интерфейса Map<K, V> для получения дополнительной реализации.

http://download.oracle.com/javase/6/docs/api/java/util/Map.html

6 голосов
/ 09 ноября 2011
3 голосов
/ 09 ноября 2011

Интерфейс, который вы ищете: Map<K, V>.

Для реализации, аналогичной C # Dictionary, попробуйте HashMap<K, V>

1 голос
/ 08 июня 2012

Я обычно предпочитал java.util.TreeMap HashMap.Это не так быстро, но вам не нужно беспокоиться об алгоритмах хеширования или установке размера.Что еще более важно, он благоприятен для памяти, потому что он использует небольшие порции памяти, а не выделяет обширные массивы.Если вы обладаете строгим контролем над созданием и удалением ваших Карт, заранее знаете, сколько данных они будут хранить, и знаете, что количество записей не будет сильно меняться во время работы вашей программы, используйте Hashmap.В противном случае используйте Treemap.

Другая действительно классная Карта, с которой мне еще не приходилось сталкиваться в .NET, это java.util.concurrent.ConcurrentSkipListMap .Это отлично подходит для многопоточных ситуаций.Это полностью потокобезопасный и , он не блокирует.

(Я нашел этот вопрос, глядя на один закрытый, как на дубликат. Я думал, что оба вопроса могут использовать ответ, который упомянул что-токроме HashMaps, хорошие как HashMaps для большинства применений и аналогичны словарю C #.)

0 голосов
/ 09 ноября 2011

Вы ищете альтернативу универсальному IDictionary в C #, который принимает пары (ключ, значение).

В Java существует класс Dictionary , который является родительским классом любого класса, который принимает пары (ключ, значение).

A HashTable (что расширяет словарь) удовлетворит ваши потребности.Он выполняет такие операции, как копирование, удаление, добавление, проверка наличия элемента и т. Д.Однако, хотя IDictionary поддерживает цикл foreach в C #, для цикла по HashTable в Java вам понадобится итератор.

Дополнительным преимуществом HashTables является его синхронизация, поэтому вам не придется беспокоиться о параллелизме.

Если, однако, вы ищете асинхронную реализацию, вы должны использовать HashMap .HashMap также требует, чтобы итератор прошел через него.

Несомненно, вам также нужно посмотреть, как Iterator работает в Java.


HashTables: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Hashtable.html

HashMaps: http://download.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html

Итератор: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Iterator.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...