最佳答案
实际上,我原以为这些操作对于一般实现来说都是O(logN)
。
对于
first()
和last()
是O(1)
TreeSet 实现需要维护一个指针分别到树中最左边和最右边的叶节点。维护这些会增加每次插入的恒定成本,并且至少会增加每次删除的恒定成本。实际上,该实现可能会即时找到最左边/最右边的节点……这是一个O(logN)
操作。lower()
和higher()
方法必须完成与get
相同的工作,因此是O(logN)
.
当然,您可以自己查看源代码以了解实际情况。 (正如其他人所做的那样:见下文。)
关于java - TreeSet 中有序操作的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214670/