从scala中的SortedMap中移除

从scala中的SortedMap中移除,scala,collections,Scala,Collections,我有一些像这样的分类地图 val m = SortedMap[Long, String]() val buffer = 1000 和一种方法 def m(l: Long, s: String) = { m + { (l, s) } //Now in order to avoid OutOfMemory //I want to keep in the m keys in the interval //[max - buffer, max] } 如何从映射中删除除

我有一些像这样的分类地图

val m = SortedMap[Long, String]()
val buffer = 1000
和一种方法

def m(l: Long, s: String) = {
    m + { (l, s) }
    //Now in order to avoid OutOfMemory
    //I want to keep in the m keys in the interval
    //[max - buffer, max]
}
如何从映射中删除除
[max-buffer,max]
以外的所有值


来自的方法
不是我想要的,因为它创建了一个投影,并且条目可用于垃圾收集。

最后N个元素

如果您只想保留最右边的N个元素,那么将可以工作,因为您的密钥已排序:

val updatedM = m takeRight buffer
在一定范围内

如果您希望将钥匙保持在某个范围内,则以下选项似乎就是您想要的:

val goodKeys = (max - buffer) to max

val updatedM = m -- (m.keys -- goodKeys)    //*

*根据ArchetyPalpaul的准确评论进行更新。

最后N个元素

如果您只想保留最右边的N个元素,那么将可以工作,因为您的密钥已排序:

val updatedM = m takeRight buffer
在一定范围内

如果您希望将钥匙保持在某个范围内,则以下选项似乎就是您想要的:

val goodKeys = (max - buffer) to max

val updatedM = m -- (m.keys -- goodKeys)    //*

*根据ArchetyPalpaul的准确评论进行更新。

您完全删除OP想要保留的密钥
m--(m.keys--badkeys)
应该这样做吗?@thearchetypall答案根据您的建议更新。谢谢你的更正。你移除了OP想要保留的钥匙
m--(m.keys--badkeys)
应该这样做吗?@thearchetypall答案根据您的建议更新。谢谢你的更正。