我的用例非常简单,看起来像缓存所以也许像Guava这样的东西很有用,但是我使用scala并且如果我不需要的话,不想拉入番石榴。
case class AAA(index:Double) extends Ordered[AAA] {
override def compare(that: AAA): Int = index.compare(that.index)
}
var aaaSet = mutable.TreeSet[AAA]()
AAA主要以增加的顺序进入集合,但索引值可能低于已存在的值。我需要的是一个简单的函数,它删除低于某个索引的元素(Double)。这不是必须的 - 因为索引上方的任何内容都不会被删除。我可以用O(log(n))复杂度做到这一点,但因为我总是可以从集合(或头部)的底部开始,我认为它可以更高效地完成。显然我很快就会使用缓存库,但这些索引不是基于时间的,我的程序中需要多达数百万个这样的集合(因此希望比O(log(n))更快)。
非常感谢对可能的解决方案的一些帮助和指导。即使这意味着O(log(n))意味着最佳性能。
答案 0 :(得分:0)
即使它不是我想要的解决方案,我认为这将是一个不错的解决方案:
aaaSet = aaaSet.dropWhile(aa => aa.index < 1.3)