我想将键/值的 Seq 转换为 Map。序列的第一个元素被保留,所以对列表从位置 1 开始。
问题是:有没有可能用更函数式的方式来实现这个功能?
def list2Map(plainMap:Seq[String]) = {
var map = Map[String, String]()
var idx = 1;
while(plainMap.size > idx) {
val key = plainMap(idx)
idx += 1
val value = plainMap(idx)
idx += 1
map = map + (key -> value)
}
map
}
assert( list2Map( Seq("reserved slot","key0","value0","key1","value1","key2","value2") ) == Map( ("key0"->"value0"),("key1"->"value1"),("key2"->"value2") ) )
我是 Scala 的新手,我知道有很多不同的方法可以迭代集合,但我没有找到 forEach 方法来每次迭代读取两个元素,从元素 1 开始。
PS:谢谢大家。我从每个人的回应中学到了很多东西!!
最佳答案
list.drop(1).grouped(2).map { x => x.head -> x.last }.toMap
关于algorithm - 从 Map 的 List 表示到 Scala 中的真实 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37932216/