Entfernen von leeren Zeichenketten aus Karten in scala

8
%Vor%

Im obigen Codefragment kann die Tokenize-Funktion leere Zeichenfolgen zurückgeben. Wie überspringe ich das Hinzufügen zur Karte in diesem Fall? oder entfernen Sie leere Einträge nach dem Hinzufügen zur Karte?

    
Siva 05.11.2014, 09:31
quelle

4 Antworten

23

tokenizedLines.filter(_.nonEmpty)

    
akagroundhog 05.11.2014, 09:43
quelle
10

Die derzeit akzeptierte Antwort, die filter und nonEmpty verwendet, verursacht einige Leistungseinbußen, weil nonEmpty keine Methode für String ist, sondern stattdessen durch implizite Konvertierung hinzugefügt wird. Wenn Wertobjekte verwendet werden, erwarte ich, dass der Unterschied fast nicht wahrnehmbar ist, aber bei Versionen von Scala, wo dies nicht der Fall ist, ist es ein wesentlicher Erfolg.

Stattdessen könnte man das verwenden, was garantiert schneller ist:

%Vor%     
Daniel C. Sobral 05.11.2014 22:01
quelle
1

Sie könnten FlatMap mit Option verwenden?

so etwas wie das     linien.flatMap {          Fall "" = & gt; Keiner          Fall s = & gt; Einige (s)     }

    
crak 05.11.2014 09:54
quelle
0

val tokenizedLines = (linien.map (Tokenizer.tokenize)). filter (_. nonEmpty)

    
user1989252 05.11.2014 16:59
quelle

Tags und Links