如何将列表连接到scala中的另一个列表

Pra*_*A R 0 scala list concatenation scala-java-interop

在这里,我用来连接2个列表(使用相同的类型) :+

代码是 testResult:+ studentsearch

列表长度在控制台获得

调节器

@RequestMapping(value = Array("parent/ViewReports.html"))
 def viewReportPage(test: Test): String = {    

    var userAccount: UserAccount = secService.getLoggedUserAccount
    var z = userAccount.getId().toLong
    var studentsearch: java.util.List[StudentTest] = Nil
    var studentTestResult: java.util.List[StudentTest] =Nil
    var testResult: java.util.List[StudentTest] =Nil      

    var searchstudent = parentStudentService.findParentStudentByParent(z)

    for(srchStd <- searchstudent){    
      var sid= srchStd.getStudent().getId()  
      studentsearch = studentTestService.findAllStudentTestByStudent(sid)
    }

    testResult :+ studentsearch 
    println("Length:" +testResult.length)  
    studentTestResult = ListBuffer(testResult: _*)    .
    results = studentTestResult

    "redirect:/parent/result.html"
}
Run Code Online (Sandbox Code Playgroud)

连接代码是错误的?

请分享你的答案

Chr*_*tin 5

您应该查看:+您正在调用的方法的API文档.

我不确定哪个Scala集合类型java.util.List被隐式转换为,但我认为该:+方法在任何地方都是相同的:http://www.scala-lang.org/api/current/#scala.collection.Seq

java.util.List隐式转换scala.collection.mutable.Buffer.

附加了元素的此序列的副本.

换句话说,:+不修改集合,因此该语句TestResult :+ studentsearch无效.

您可以直接调用Java集合的方法:TestResult addAll studentsearch.

虽然,我可以问,你为什么使用java.util.List而不是Scala集合?

当然,我还应该注意,在Scala中,就像在Java中一样,用大写字母开始一个变量名称是非常不满的.(testResult,不是TestResult).它在Scala中更为重要,因为变量和类型共享相同的命名空间,与Java不同.