Sou usuário de Python há muito tempo e gosto muito da forma como os dicionários são usados. Eles são muito intuitivos e fáceis de usar. Existe um bom Java equivalente aos dicionários do python? Já ouvi falar de pessoas que usam hashmaps e hashtables. Alguém poderia explicar as semelhanças e diferenças do uso de hashtables e hashmaps em comparação com os dicionários de python?
fonte
A ideia de dicionário e mapa é semelhante. Ambos contêm elementos como
Em Java,
Map
é implementado de maneiras diferentesHashMap
, como ,TreeMap
etc., asput(), get()
operações são semelhantesConsulte a documentação do HashMap em java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
fonte
Até onde eu sei (eu não uso java), dicionários são apenas outro nome para um hashmap / hashtable.
Pegando o código de http://www.fluffycat.com/Java/HashMaps/ parece que eles são usados de uma maneira muito semelhante, com um pouco de boiler-plate extra de java.
fonte
Uma diferença entre os dois é que
dict
há requisitos mais rígidos quanto a quais tipos de dados podem atuar como uma chave. Java permitirá que qualquer objeto funcione como uma chave - embora você deva tomar cuidado para garantir que ohashCode()
método do objeto retorne um valor único que reflita seu estado interno. O Python requer chaves para se ajustar à sua definição de hash , que especifica que o código hash do objeto nunca deve ser alterado durante sua vida útil.fonte
hashCode()
método Java ou em um__hash__()
método Python , você deve tentar retornar um valor exclusivo que reflita o estado interno. Em Java ou Python, se você tiver um objeto mutável, provavelmente não deve ser uma chave hashtable, portanto, faz sentido lançar uma exceção dos métodoshashCode()
ou__hash__()
.