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)
连接代码是错误的?
请分享你的答案
您应该查看:+您正在调用的方法的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不同.