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