8 Stimmen

Scala beste Weg, um eine Sammlung in eine Map-by-key? (2. Variante)

(Dies ist eine Variante zu diese Fragen und Antworten )

Sagen wir, ich habe das:

List( "foo", "bar", "spam" )

Ich möchte eine Map erstellen, deren Schlüssel die Länge der Zeichenkette ist und deren Wert eine Sammlung aller Zeichenketten ist, die diese Länge haben. Mit anderen Worten, angesichts der über Liste, würden wir bekommen:

Map( 3 -> List(foo, bar), 4 -> List(spam) )

Der Code, den ich dafür geschrieben habe, lautet:

list.foldLeft(Map[Long, List[String]]()) {
  (m, s) => m(s.length) = s ::
     ( if ( m.contains(s.length) ) m(s.length)
       else Nil )
}

Das funktioniert, aber es fügt der eleganten Antwort, die Daniel Spiewak auf die ursprüngliche Frage gegeben hat (auf die oben verwiesen wird), eine Menge Hässlichkeit hinzu.

Haben Sie eine Idee, wie ich die Lösung für meine Variante verbessern kann?

Danke! Sean

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X