我的輸入文件如下。它包含每個客戶的一些購買細節。在scala中我們如何找到每個客戶的最新記錄?
輸入:
100,Surender,2015-01-23,PHONE,20000
100,Surender,2015-01-24,LAPTOP,25000
101,Ajay,2015-02-21,LAPTOP,40000
101,Ajay,2015-03-10,MUSIC_SYSTEM,50000
102,Vikram,2015-07-20,WATCH,60000
我的要求是我想找出每個客戶的最新購買詳情。
因此預期產量
預期輸出:
List(101,Ajay,2015-03-10,MUSIC_SYSTEM,50000)
List(100,Surender,2015-01-24,LAPTOP,25000)
List(102,Vikram,2015-07-20,WATCH,60000)
我嘗試下面的代碼,它是給我預期的輸出..
但這以下邏輯有點類似於java。
我的Scala代碼:
package pack1
import scala.io.Source
import scala.collection.mutable.ListBuffer
object LatestObj {
def main(args:Array[String])=
{
var maxDate ="0001-01-01"
var actualData:List[String] =List()
var resultData:ListBuffer[String] = ListBuffer()
val myList=Source.fromFile("D:\\Scala_inputfiles\\records.txt").getLines().toList;
val myGrped = myList.groupBy { x => x.substring(0,3) }
//println(myGrped)
for(mappedIterator <- myGrped)
{
// println(mappedIterator._2)
actualData =mappedIterator._2
maxDate=findMaxDate(actualData)
println(actualData.filter { x => x.contains(maxDate) })
}
}
def findMaxDate(mytempList:List[String]):String =
{
var maxDate ="0001-01-01"
for(m <- mytempList)
{
var transDate= m.split(",")(2)
if(transDate > maxDate)
{
maxDate =transDate
}
}
return maxDate
}
}
能有人幫我試圖用一階簡單的方法相同的方法呢?
或上述代碼是實現該邏輯的唯一方法?
「上面的代碼是實現該邏輯的唯一方法嗎?」不,您正在編寫Java-in-Scala。看看集合API(也可能是Scala中的一個教程)。 http://scala-lang.org/api/current/#package雖然你找到了'filter',所以它有點奇怪,你沒有注意到'max'和'maxBy' .. –