在Java中删除集合的方法的时间复杂度是多少?我知道在ArrayList中删除方法的时间复杂度为O(n(,但想确认集是否也相同?
根据底层实现的不同,列表/集合中的删除可以是O(1)
、O(n)
或O(log n)
(或者对于深奥的实现来说,其他一些更大的复杂性(。
ArrayList
删除对除最后一个元素之外的所有元素都O(n)
。删除ArrayList
中的最后一个元素是O(1)
(减小大小计数器并将元素设置为null
(。
现在你问的是一个接口(Set
(,它至少有两个实现(TreeSet
,HashSet
(,它们都提供了不同的删除时间复杂度,就像列表情况下的LinkedList
一样(例如,O(1)
删除头部(。
set 接口不保证删除的上限,但任何理智的集合实现都O(log n)
我认为最坏的情况:)