Scala список объектов в строку, разделенную запятыми

Из 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
1
0
4 011
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Сопоставьте все свои строковые значения, а затем вызовите

.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(",")

Другие вопросы по теме