从有序对象中拆分scala树集

时间:2016-12-20 21:50:21

标签: scala guava treeset

我的用例非常简单,看起来像缓存所以也许像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))意味着最佳性能。

1 个答案:

答案 0 :(得分:0)

即使它不是我想要的解决方案,我认为这将是一个不错的解决方案:

aaaSet = aaaSet.dropWhile(aa => aa.index < 1.3)