从java.util.List [CustomObject]我想删除值并创建一个逗号分隔的字符串,尝试了以下代码,但出现了异常
片段1
def getVal(a_attribList: List[CustomObject]): String = a_attribList
.stream()
.map(new java.util.function.Function[CustomObject, String] {
override def apply(CustomObject): String = {
t.getNolumn
}
})
.collect(Collectors.joining(","))
摘要2
def getVal(a_attribList: List[CustomObject]): String = {
a_attribList
.stream()
.map(a => a.getNolumn)
.collect(Collectors.joining(","));
}
例外
type mismatch;
found : java.util.function.Function[com.test.dataobjects.CustomObject,String]
required: java.util.function.Function[_ >: com.test.dataobjects.CustomObject, _ <: R]
.map(a => a.getNolumn)
^
three errors found
答案 0 :(得分:2)
映射所有字符串值,然后调用
.mkString(",")
答案 1 :(得分:2)
正如@ValentinCarnu指出的那样,这些代码段使用的是scala.collection.immutable.List
而不是java.util.List
。
因此,您只需要使用standar scala匿名函数对其进行映射,然后使用mkString method
def getVal(a_attribList: List[CustomObject]): String =
a_attribList.map(a => a.getNolumn).mkString(",")
现在,如果您确实有一个Java列表,则可以使用convert it to a Scala list JavaConverters package。
import scala.collection.JavaConverters._
def getVal(a_attribList: java.util.List[CustomObject]): String =
a_attribList.asScala.map(a => a.getNolumn).mkString(",")
答案 2 :(得分:1)
您可以将其隐藏到scala列表中并进行映射:
a_attribList.asScala.map(_.getNolumn).mkString(",")