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

ケース クラスは であるため、このメソッドを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 に答える