Java эквивалентно словарям Python

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

Ответ 1

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

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

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

Ответ 2

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

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

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

import java.util.HashMap;

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

Ответ 3

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

Ответ 4

Насколько я знаю (на самом деле я не использую java) словари - это просто другое имя хэш-карты/хэш-таблицы.

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