如何将字符串列表的列表转换为Scala中的对象列表?

Joã*_*iva 0 collections scala list

我正在读取一个.csv文件,它返回一个字符串列表列表,recipiesList,格式如下:

列表(葡萄牙绿汤,葡萄牙),列表(烤沙丁鱼,葡萄牙),列表(盐渍鳕鱼配奶油,葡萄牙))

我有一个类食谱,它已按以下方式定义:

case class Recipe(name: String, country: String)
Run Code Online (Sandbox Code Playgroud)

有没有直接的方法可以将recipiesList转换为List [Recipe]类型的列表?比如用地图或某种提取器?

Jes*_*per 6

您可以List使用该map方法转换a的元素:

val input = List(List("Portuguese Green Soup", "Portugal"),
    List("Grilled Sardines", "Portugal"),
    List("Salted Cod with Cream", "Portugal"))

val output = input map { case List(name, country) => Recipe(name, country) }
Run Code Online (Sandbox Code Playgroud)

  • 当给定函数是部分函数时,使用`collect`而不是`map`会更安全.这样,如果你的数据已损坏(由于某种原因将`input`中的某些元素称为三个元素),它将被忽略,而不是抛出一个`MatchError`. (3认同)
  • @CyrilleCorpet,如果我的团队开始编写代码,默默地忽略输入中的错误,我会说话!最好使用`case _`并对错误做些什么 (3认同)