迭代地图的中间三分之一

pri*_*sia 1 loops scala map

我有一个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)

chr*_*ris 5

您可以使用该方法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整除的地图的中间三分之一.