2
votes

Kotlin - Stockage et lecture d'un tableau dans hashmap

Noob à Kotlin. J'ai un hashmap et qui contiendrait un tableau pour l'une de ses clés. Cependant, lorsque je lis la valeur de cette clé, Kotlin ne la reconnaît pas comme un tableau.

Ma hashmap:

tests.add(someHashMap)
myHashMap["test"] = tests


0 commentaires

3 Réponses :


1
votes

Par incompatibilité de type, faites-vous référence à l'erreur suivante?

error: seuls les appels sûrs (?.) ou non-null asserted (!!.) sont autorisés sur un récepteur Nullable de type Array / * = java. util.HashMap * />?

Si tel est le cas, vous devez remplacer l'expression par "__ $ {myHashMap [" test "] ?. count ()} __" ou "__ $ {myHashMap [" test " ] !!. count ()} __ " car myHashMap [" test "] peut être évalué à null.


0 commentaires

0
votes

Si vous voulez que myHashMap ["test"] renvoie ["Hello": "World", "ABC": 3] , cela doit être une carte. Une façon de le saisir peut être:

mapOf ("test" to mapOf ("Hello" to "World", "ABC" to 3))

Cela pourrait être également la raison de votre erreur d'incompatibilité de type. En le définissant comme ci-dessus, le résultat serait:

var testString = "__ $ {myHashMap [" test "] !!. Count ()} __" // -> 2 code>

hashMapOf ("test" to arrayOf > ()) donnerait quelque chose comme:

{
  "test": {
    "Hello": "World",
    "ABC": 3
  }
}


0 commentaires

0
votes

Dans l'exemple que vous avez mentionné ici, var testString = "__ $ {myHashMap [" test "]. count ()} __"

Vous obtenez une erreur car myHashMap ["test"] pourrait être nul et dans ce cas .count () lèverait NullPointerException.

Exemple - Ici, vous avez créé le hashmap avec la clé "test" et avez essayé d'y accéder. Essayez d'exécuter ceci -

println (myHashMap ["dummy"]) // Sortie - null

Puisque kotlin est null sûr, si l'objet est nullable, il est nécessaire d'utiliser l'une des assertions nulles sûres suivantes.

  1. !! -> Cela signifie que vous ne vous souciez pas même si object est nul et que vous voulez toujours que .count () soit appelé.

Exemple - myHashMap ["dummy"] !!. count () Le résultat ici serait NullPointerException

  1. ? -> Cela signifie que vous ne voulez pas appeler count () si au cas où myHashMap ["dummy"] renvoie null.

Exemple - myHashMap ["dummy"] ?. count () Le résultat ici serait nul


0 commentaires