它是作为HashSet、链接HashSet还是二进制搜索树实现的?
我知道它是为了封装而隐藏的,但是我需要估计渐近运行时。
发布于 2020-06-01 14:51:57
查看标准库的源代码可能很有趣,也很有启发意义--但mutableSetOf()
今天返回的内容并不重要,因为在以后的Kotlin版本中,这种情况可能会发生变化。
重要的是,文献资料没有提到类,只提到MutableSet
接口。这是JetBrains承诺的全部内容,所以这就是您可以安全地假设的所有内容。当不是合同的一部分时,您永远不应该依赖于特定的实现选择。
(他们唯一指定的是“返回的集合保留了元素的迭代顺序。”这样您就知道它不能返回一个HashSet
,这是不可能的。但这仍然留下了几种当前的可能性,而且将来可能会有更多的可能性。甲骨文或JetBrains可能会想出一个新的实现,它具有更好的一般或最坏的性能,或者其他一些可取的特性。)
将结果传递给LinkedHashSet
可能会在今天起作用,但在未来的Kotlin版本中,它可能会在ClassCastException
. 中失败(更糟糕的是,它可能在大多数情况下都能工作,然后在您没有预料到的情况下抛出一个ClassCastException
)。
因此,--如果您有特定的性能要求,那么最好显式地创建您想要的类型.
mutableSetOf()
是用于当您没有特定的需求,只想要一些容易的东西,一般情况下可能会表现良好。
https://stackoverflow.com/questions/62133675
复制相似问题