Scala 在数组中拆分字符串并转换为映射

Scala 在数组中拆分字符串并转换为映射,scala,Scala,我正在读取一个由行组成的文件,格式为a=b。 使用Source.fromFile(“file”).getLines我得到了一个迭代器[String]。我想我需要将字符串拆分为元组,然后从元组形成映射-这很简单。我无法从迭代器[String]转到迭代器[(String,String)] 我该怎么做?我是scala的初学者,对函数式编程没有经验,因此我接受其他方法:)您可以使用map方法转换迭代器返回的值: 定义映射[B](f:(A)⇒ B) :Iterator[B]您可以通过拆分字符串,然后使用I

我正在读取一个由行组成的文件,格式为
a=b
。 使用
Source.fromFile(“file”).getLines
我得到了一个
迭代器[String]
。我想我需要将字符串拆分为元组,然后从元组形成映射-这很简单。我无法从
迭代器[String]
转到
迭代器[(String,String)]


我该怎么做?我是scala的初学者,对函数式编程没有经验,因此我接受其他方法:)

您可以使用
map
方法转换迭代器返回的值:


定义映射[B](f:(A)⇒ B) :Iterator[B]

您可以通过拆分字符串,然后使用
Iterator.map从第一个和第二个元素创建元组来执行此操作:

val strings = List("a=b", "c=d", "e=f").iterator
val result: Iterator[(String, String)] = strings.map { s =>
  val split = s.split("=")
  (split(0), split(1))
}
如果您不介意额外的迭代和中间集合,您可以让它更漂亮一点:

val result: Iterator[(String, String)] =
  strings
   .map(_.split("="))
   .map(arr => (arr(0), arr(1)))
也许是这样

Source.fromFile("file").getLines.map(_.split("=").map( x => (x.head,x.tail) ) )
您可能希望将其包装为
Try

这是我的尝试:

 val strings = List("a=b", "c=d", "e=f")
 val map = strings.map(_.split("=")).map { case Array(f1,f2) => (f1,f2) }

非常抱歉,我不明白您的回答可能在尾部也使用了
mkString(“=”)
,因此您确定您有(String,String),无论有多少次拆分。