2017-01-24 1 views

Antwort

2

Sie versuchen, diese Methode kann die Länge der längsten Liste herausfinden und dann Elemente sammeln aus jede Unterliste, während Schleife durch die Indizes:

val maxLength = a.map(_.length).max 
// maxLength: Int = 3 

(0 until maxLength) map (i => a flatMap (List(i) collect _)) 
// res45: scala.collection.immutable.IndexedSeq[List[Int]] = 
//  Vector(List(1, 4, 7), List(2, 5, 8), List(3, 6)) 
2

die groupBy Methode Gruppenelemente in der Liste verwendet werden soll. In Ihrem Beispiel gruppieren Sie jedes dritte Element. In meiner Lösung verwende ich den Modul Operator jedes drittes Element in der Liste Gruppe:

val a = (1 to 8).toList.groupBy(_ % 3).values.toList 
a: List[List[Int]] = List(List(2, 5, 8), List(1, 4, 7), List(3, 6)) 

Wenn Sie die Ergebnisse sortiert werden sollen (wie in Ihrem Beispiel), dann die sortBy add() am Ende:

val a = (1 to 8).toList.groupBy(_ % 3).values.toList.sortBy(_(0)) 
a: List[List[Int]] = List(List(1, 4, 7), List(2, 5, 8), List(3, 6)) 
Verwandte Themen