給定一個Iterator[String]
它是很容易創建CSV String
使用mkString:定製mkString功能斯卡拉迭代
//Result: "1,2,3,4,5"
Iterator("1","2","3","4","5").mkString(",")
與mkString的問題是,它會消耗內存來保存整個結果字符串。
是否可以將變換應用於原始迭代器,該變換器提供與mkString相同的輸出,但不會將內存與整個結果綁定在一起?
val csvIter : Iterator[String] = doSomething(Iterator("1","2","3","4","5"))
出於測試目的,下面的表達式應該返回true:
val originalIter : Iterator[String] = ???
originalIter.mkString(",") == doSomething(originalIter).reduceOption(_ + _).getOrElse("")
預先感謝您的關懷和響應。
'iterator.map(_ +「,」)'? – Dima
@Dima這個解決方案在最後一個元素之後留下一個揮之不去的','。 mkString沒有這個缺陷... –
你會允許'Iterator(「1」,「,2」,「,3」,...)'? –