给定一个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”,...)'? –