在文档中,声明
与HashSet类似,[LinkedHashSet]为基本操作(add,contains和 remove )提供恒定时间性能,假设散列函数在桶之间正确地分散元素。
我理解HashSet如何为remove(Object obj)提供常量时间性能,但由于LinkedHashSet也需要维护链表,并且删除特定元素涉及遍历列表,所以在我看来删除(对象obj)应该采用线性时间。我错过了什么吗?
我能想到的唯一解释是哈希表中的每个条目(由LinkedHashSet维护)都包含对链表中相应节点的引用,因此在链表中定位节点需要花费一些时间。但我不确定它是否真的是实施......
谢谢!
答案 0 :(得分:2)
LinkedHashSet
还维护节点之间的链接。没有必要遍历整个列表以进行删除,只需要更新列表邻居。访问特定元素并不比HashSet
更昂贵。