cast LinkedHashMap à HashMap en groovy
Comment puis-je convertir des LinkedHashMap
à java.util.HashMap
en groovy?
Quand je crée quelque chose comme cela dans groovy, il crée automatiquement un LinkedHashMap
même quand je le déclarer comme HashMap h = ....
ou def HashMap h = ...
J'ai essayé de faire:
HashMap h = ["key1":["val1", "val2"], "key2":["val3"]]
et
def HashMap h = ["key1":["val1", "val2"], "key2":["val3"]]
h.getClass().getName()
vient encore de retour avec LinkedHashMap
.
Juste par curiosité, pourquoi avez-vous attention à ce que la mise en œuvre de
Map
il est en train de créer?OriginalL'auteur user140736 | 2010-09-23
Vous devez vous connecter pour publier un commentaire.
LinkedHashMap
est une sous-classe deHashMap
de sorte que vous pouvez l'utiliser comme unHashMap
.Ressources :
OriginalL'auteur Colin Hebert
Réponse Simple -- cartes ont quelque chose qui ressemble beaucoup à un constructeur de copie:
Donc, si vous êtes attaché à la notation littérale, mais vous devez absolument avoir une mise en œuvre différente, cela va faire le travail.
Mais la vraie question est, pourquoi faites-vous attention à ce que l'implémentation sous-jacente est? Vous ne devriez même pas le soin que c'est une table de hachage. Le fait qu'elle met en œuvre l'interface de la Carte doit être suffisante pour presque n'importe quel but.
assertEquals("Checking Data Input Variable 5/9 - Define attr", ["male": 0, "female": 1], var5.define)
et l'assertion échoue parce que le type réel estHashMap
alors que le type attendu estLinkedHashMap
. Peut-être que je vais écrire ma propreassertMapEquals()
fonction qui utilise votre suggestion...OriginalL'auteur conleym
Il a probablement été pris avec le redoutable Groovy-Carte-Gotcha, et a été titubant dans le désert de possibilités comme je l'ai fait pour l'ensemble de l'après-midi.
Voici l'affaire:
Lors de l'utilisation de la variable de chaîne de touches, vous ne pouvez pas accéder à une carte dans la propriété format de notation (par exemple de la carte.un.b.c), quelque chose d'inattendu dans Groovy où tout est généralement concis et merveilleux ;--)
La solution de contournement consiste à envelopper les variables clés dans les parenthèses à la place des guillemets.
La création de la carte comme va apporter beaucoup de plaisir pour des sadiques dans le monde entier:
Espère que cela sauve un autre Groovy-ist de la folie temporaire...
OriginalL'auteur virtualeyes
œuvres. À l'aide de la [:] la notation semble attacher à LinkedHashMap.
OriginalL'auteur hvgotcodes