Из 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
Сопоставьте все свои строковые значения, а затем вызовите
.mkString(",")
Вы можете преобразовать его в Scala List и выполнить сопоставление:
a_attribList.asScala.map(_.getNolumn).mkString(",")
Как уже отмечал @ValentinCarnu, фрагменты используют scala.collection.immutable.List
вместо java.util.List
.
Таким образом, вам нужно только сопоставить его с помощью стандартной анонимной функции scala, а затем преобразовать его в строку с помощью mkStringметод
def getVal(a_attribList: List[CustomObject]): String =
a_attribList.map(a => a.getNolumn).mkString(",")
Теперь, если у вас действительно есть java List, вы можете преобразовать его в список Scala, используя JavaConvertersупаковка.
import scala.collection.JavaConverters._
def getVal(a_attribList: java.util.List[CustomObject]): String =
a_attribList.asScala.map(a => a.getNolumn).mkString(",")