2017-10-19 4 views
3

In Python kann ich komplexe Dictionary-Schlüssel haben, wie zum Beispiel:Wie kann ich in Kotlin einen zusammengesetzten Schlüssel haben?

d = {} 
d[(1, 2)] = 3 
print d[(1, 2)] # prints 3 

Wie kann ich erklären, und eine solche Karte in Kotlin bevölkern?

Edit: Ich habe versucht, eine Karte wie diese zu erklären, aber ich weiß nicht, wie es zu füllen:

val my_map = HashMap<Pair<Int, Int>, Int>() 
+1

Es ist nicht von Natur aus komplexer. Der Schlüssel kann ein beliebiger Typ sein, einschließlich eines Paares. – chris

Antwort

3

Es ist ganz einfach, Sie zuerst Ihr Wörterbuch erstellen und dann die Schlüssel und Werte einfügen:

val (a, b):Pair<Int, String> = Pair(1, "x") 

val map: HashMap<Pair<Int, String>, Int> = hashMapOf((a, b) to 1) 

map[Pair(2, "y")] = 3 

und so weiter :)

+0

Ok, es funktionierte, ich musste explizit "Pair" schreiben: 'my_map [Pair (1, 2)] = 3' – fafl

+0

@fafl great! Ja, sobald Sie erstellt haben, können Sie auch Element wie diese hinzufügen, ich habe immer geliebt zu helfen. –

1

In Kotlin, im Gegensatz zu Python gibt es keine Art Tupeldaten. Für Zwei-Tupel gibt es eine Pair-Klasse. Für größere Daten sollten Sie Datenklassen verwenden.

val map: HashMap<Pair<Int, Int>, Int> = hashMapOf(Pair(1, 2) to 3) 
val nullable: Int? = map[Pair(1, 2)] 
val notNullable = map.getValue(Pair(1, 2)) 
Verwandte Themen