集合的删除方法的时间复杂度



在Java中删除集合的方法的时间复杂度是多少?我知道在ArrayList中删除方法的时间复杂度为O(n(,但想确认集是否也相同?

根据底层实现的不同,列表/集合中的删除可以是O(1)O(n)O(log n)(或者对于深奥的实现来说,其他一些更大的复杂性(。

ArrayList删除对除最后一个元素之外的所有元素都O(n)。删除ArrayList中的最后一个元素是O(1)(减小大小计数器并将元素设置为null(。

现在你问的是一个接口(Set(,它至少有两个实现(TreeSetHashSet(,它们都提供了不同的删除时间复杂度,就像列表情况下的LinkedList一样(例如,O(1)删除头部(。

set 接口不保证删除的上限,但任何理智的集合实现都O(log n)我认为最坏的情况:)

相关内容

最新更新