2016-03-29 6 views
0

: Ich bin in scala/funken so könnten Sie bitte mir darüber helfen:Karte in Array-Liste

Ich habe dies:

val list= Array(("a",(1,2,3)),("b",(1,2)) 

Ich möchte Ausgang haben:

(a,1),(a,2),(a,3),(b,1),(b,2) 

Was kann ich tun, um dies zu haben?

+0

Was hat das mit Spark zu tun? Dies ist eine grundlegende Scala. – eliasah

Antwort

0

Sie würden nur das tun müssen:

list.flatMap(t => t._2.productIterator.map(n => t._1->n)) 

Persönlich würde ich nicht dynamisch Tupel verwendet werden:/Ich würde Listen von ints oder etwas verwenden.

1

Sie könnten die productIterator verwenden, um über die Tupel zu iterieren. Die folgenden Ergebnisse sind in List[(String, Any)] = List((a,1), (a,2), (a,3), (b,1), (b,2)). Nicht sicher, ob es eine nette Möglichkeit gibt, zu folgern, dass die Typen der Elemente in allen Ihren Tupeln Integer statt Any sind.

val list: Array[(String, Product)]= Array(("a",(1,2,3)),("b",(1,2))) 

(for { 
    i <- list.iterator 
    n <- i._2.productIterator 
} yield { 
    (i._1, n) 
}).toList