3

我有一个包含相同类型案例类的列表,我正在寻找将其保存到以制表符分隔的文本文件的最佳实践

case class mycase1 (x: Int, y:Int , name:String)  
val item1 = new mycase1(1,2,"item1")
val item2 = new mycase1(3,4,"item2")
val item3 = new mycase1(5,6,"item3")

val myList = List (item1,item2,item3)

将上述数据结构写入文件的最佳方法是什么?有没有这样的事情:

myList.toFile(delimiter="\t")
4

1 回答 1

7

因为 case 类是 a Product,所以您可以简单地使用该productIterator方法按照在迭代器中定义的顺序获取字段。您可以使用它和mapList ofmycase1到 List of String,然后使用它来写入文件。一个简化的示例如下所示:

  case class mycase1 (x: Int, y:Int , name:String)  
  val item1 = new mycase1(1,2,"item1")
  val item2 = new mycase1(3,4,"item2")
  val item3 = new mycase1(5,6,"item3")

  val myList = List (item1,item2,item3)

  val out = new PrintWriter(new FileWriter(pathToMyFile))
  try{
    myList.map(_.productIterator.mkString("\t")) foreach (out.println(_))      
  }
  finally{
    out.close
  }

唯一需要注意的是,字段确实按照它们在案例类构造函数中定义的顺序(从左到右)输出。如果你想要另一种方式,我的解决方案将不起作用。

于 2013-08-26T18:16:12.810 回答