我有一个scala Map[String, String],我只是将一部分键与其值相比较,仅用于地图的三分之一.由于在地图中使用索引进行迭代并不容易,因此我想出了以下内容,但它不起作用.
var i = 0
var j = 0
val mapSize = sortedMap.size/3
for((key,value) <- sortedMap) {
j+=1
if((i < 3) && (key.split(' ').take(1).mkString==value)&&(j>mapSize)){
Accuracy += 1
i += 1
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用该方法slice(from: Int, until: Int),然后只迭代排序映射的中间三分之一.就像是
val mapSize = sortedMap.size
for ((key, value) <- sortedMap.slice(mapSize/3, 2*mapSize/3)) {
...
}
Run Code Online (Sandbox Code Playgroud)
请注意,只有在对基础地图进行排序时,这才是可靠的(在您的示例中似乎就是这种情况).您还可能需要稍微调整索引计算,具体取决于您认为对于大小不能被3整除的地图的中间三分之一.