Cru*_*ata 3 file-io scala data-structures
我有一个List包含相同类型的case类,我正在寻找将其持久化为带有制表符分隔的文本文件的最佳实践
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)
Run Code Online (Sandbox Code Playgroud)
将上述数据结构写入文件的最佳方法是什么?有这样的事情:
myList.toFile(delimiter="\t")
Run Code Online (Sandbox Code Playgroud)
因为case类是a Product,所以你可以简单地使用该productIterator方法按照它们在迭代器中定义的顺序来获取字段.您可以使用它和map列表的mycase1列表,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
}
Run Code Online (Sandbox Code Playgroud)
唯一需要注意的是,字段确实按照它们在case类构造函数中定义的顺序(从左到右)输出.如果你想以另一种方式,我的解决方案将无法正常工作.