我想将键/值的 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)