【发布时间】:2016-10-22 06:45:09
【问题描述】:
我想将键/值的 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:谢谢各位。大家的回复让我学到了很多!!
【问题讨论】:
-
有什么问题?
-
@Dima 问题是是否有可能以更实用的方式实现此功能。我更新了问题。
-
你能提供一个示例输入和预期输出吗?仅仅举一个简单的例子就可以提供足够的细节来得到答案。
-
@KevinMeredith 最后一行是例子的断言(输入数据和预期输出)
标签: algorithm scala functional-programming