Java эквивалентно словарям Python - PullRequest
82 голосов
/ 09 октября 2009

Я давно пользуюсь Python, и мне действительно нравится, как используются словари. Они очень интуитивно понятны и просты в использовании. Есть ли хороший Java-эквивалент словарям python? Я слышал о людях, использующих хэш-карты и хеш-таблицы. Может ли кто-нибудь объяснить сходства и различия использования хеш-таблиц и хеш-таблиц по сравнению со словарями Python?

Ответы [ 4 ]

91 голосов
/ 09 октября 2009

Класс Python dict является реализацией того, что в документации Python неофициально называется " mapping types ". Внутренне dict реализован с использованием хеш-таблицы.

Класс Java HashMap является реализацией интерфейса Map. Внутренне HashMap реализован с использованием хеш-таблицы.

Есть несколько незначительных различий в синтаксисе, и я считаю, что реализации настраиваются немного по-разному, но в целом они полностью взаимозаменяемы.

21 голосов
/ 11 сентября 2016

Идея словаря и карты похожа. Оба содержат элементы, такие как

key1:value1, key2:value2 ... and so on

В Java Map реализован различными способами, такими как HashMap или TreeMap и т. Д. put(), get() операции похожи

Map map = new HashMap();
// Put elements to the map
map.put("Ram", new Double(3434.34));
map.put("Krishna", new Double(123.22));
map.put("Hary", new Double(1378.00));
//to get elements
map.get("Krishna"); # =123.22
map.get("Hary"); # = 1378.00 

См. Документацию по HashMap в java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

.
5 голосов
/ 09 октября 2009

Одно из различий заключается в том, что dict предъявляет более строгие требования к тому, какие типы данных могут выступать в качестве ключа. Java позволит любому объекту работать в качестве ключа - хотя вы должны позаботиться о том, чтобы метод hashCode() объекта возвращал уникальное значение, отражающее его внутреннее состояние. Python требует, чтобы ключи соответствовали его определению hashable , которое указывает, что хеш-код объекта никогда не должен изменяться в течение его времени жизни.

4 голосов
/ 09 октября 2009

Насколько я знаю (я на самом деле не использую Java), словари - это просто еще одно имя для hashmap / hashtable.

Получение кода из http://www.fluffycat.com/Java/HashMaps/ кажется, что они используются очень похожим образом, с небольшим количеством дополнительной Java-карты.

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