Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala';s树集'min'运行性能_Scala_Scala Collections - Fatal编程技术网

Scala';s树集'min'运行性能

Scala';s树集'min'运行性能,scala,scala-collections,Scala,Scala Collections,在探索Scala的标准库时,我发现,TreeSet根本不会覆盖min操作,所以这个操作是从TraversableOncetrait派生的,它只使用reduceLeft。因此,我假设它只是扫描整个集合,使其成为一个线性复杂度操作,即使TreeSet的本质是它的head将是最小元素。但是声称它的复杂性是O(logn),这是有意义的,因为它只需要遍历树到最左边的元素 所以问题是:我假设head总是返回最小元素(当然是根据顺序)是正确的吗?min操作实际上是一个线性操作,从而使官方的Scala文档不正确

在探索Scala的标准库时,我发现,
TreeSet
根本不会覆盖
min
操作,所以这个操作是从
TraversableOnce
trait派生的,它只使用
reduceLeft
。因此,我假设它只是扫描整个集合,使其成为一个线性复杂度操作,即使
TreeSet
的本质是它的
head
将是最小元素。但是声称它的复杂性是O(logn),这是有意义的,因为它只需要遍历树到最左边的元素


所以问题是:我假设
head
总是返回最小元素(当然是根据顺序)是正确的吗?
min
操作实际上是一个线性操作,从而使官方的Scala文档不正确吗?

我想你是对的。
min
方法似乎是这样实现的,因为它可以被赋予不同的顺序:它的完整签名是
defmin[B>:a](隐式cmp:ordering[B]):a
@dkim-hmmm是有意义的。奇怪的是,
TreeSet
没有提供任何替代
min
的功能,人们会认为这是它的主要功能之一。