2016-06-06 8 views
0

ich einige grundlegende Programme in scalaNicht in der Lage, die scala Programm zur Vervollständigung der Mitarbeiter in den einzelnen Ländern

import scala.io.Source 
/* records.txt 
USA,Surender 
USA,Raja 
CHINA,Yen 
CHINA,Chen 
INDIA,Adam 
INDIA,Edward 

tue zu zählen */

object ReadingFile 
{ 
def main (args :Array[String]){ 
val fileLoc = "D:\\inputfiles\\records.txt" 
val lines = Source.fromFile(fileLoc).getLines().toList 
val linesSplit = lines.map(x => x.split(",")) 
val linesMap = linesSplit.map(x => (x(0),x(1))) 


} 

} 

Ich weiß nicht, wie AGG verwenden Funktion zu LinesMap. Was muss ich in meinem Code hinzufügen, um die unten Ausgang kann

USA,2 
CHINA,2 
INDIA,2 
+0

Mögliche Duplikat [Scala - Zählen Sie die Anzahl der Vorkommen von jedem Schlüssel in ein Iterator] (http://stackoverflow.com/questions/33335040/scala-count-the-number-of-occurrences-of-every-key-in--iterator) –

Antwort

1
Source.fromFile(fileLoc) 
     .getLines() 
     .map(_.split(",")). 
     .groupBy(_(0)) 
     .map(i => (i._1, i._2.size)) 

auch benutzen Sie mapValues:

Source.fromFile(fileLoc) 
     .getLines() 
     .map(_.split(",")) 
     .groupBy(_(0)) 
     .mapValues(_.size) 
+0

Ersetzen Sie die letzte 'map' durch' mapValues' –

+0

@SergeyLagutin Danke. Ich werde meine Antwort aktualisieren – chengpohi

+1

Ich glaube nicht, dass Sie die '.toList' benötigen –