将字符串列表转换为字符列表

时间:2014-03-13 22:58:12

标签: list scala

我试图将List("123", "456")转换为List('1', '2', '3', '4', '5', '6')。我目前的实施是:

def convert(strings: List[String]): List[Char] = {
    val tmp = strings map (s => s.toList())
    tmp reduceLeft ((s1, s2) => s1 ::: s2)
}

它可以工作,但必须经过两次相同的列表(将每个字符串解析为列表,并合并所有列表)。还有另一种方法,我只能通过列表一次吗?我想我需要使用reduce,但不知道该怎么做。

修改:我提出此问题并希望使用reduce的原因是因为它与我正在处理的问题有关:给定方法获取类A的对象并返回类B的某种对象列表,找到一种方法将A列表转换为B列表。所以,我正在寻找一个不特定的答案字符串或字符:)

1 个答案:

答案 0 :(得分:3)

如何:列表(" 123"," 456")。展平

scala> List("123", "456")
res0: List[java.lang.String] = List(123, 456)

scala> res0.flatten
res1: List[Char] = List(1, 2, 3, 4, 5, 6)

这是一个标准。尾递归解决方案:

scala> res0.foldLeft(List.empty[Char])((accumulator, next) => accumulator ::: next.toList)
res2: List[Char] = List(1, 2, 3, 4, 5, 6)