Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LinkedHashSet移除(对象obj)方法常量/线性时间复杂度?_Java_Algorithm_Collections - Fatal编程技术网

Java LinkedHashSet移除(对象obj)方法常量/线性时间复杂度?

Java LinkedHashSet移除(对象obj)方法常量/线性时间复杂度?,java,algorithm,collections,Java,Algorithm,Collections,文件中规定: 与HashSet类似,[LinkedHashSet]为基本操作(添加、包含和删除)提供恒定的时间性能,假设hash函数在bucket之间正确地分散元素 我理解HashSet如何为remove(objectobj)提供恒定的时间性能,但是由于LinkedHashSet也需要维护一个链表,并且移除一个特定的元素需要遍历链表,所以在我看来,remove(objectobj)应该需要线性时间。我遗漏了什么吗 我能想到的唯一解释是,哈希表(由LinkedHashSet维护)中的每个条目都包含

文件中规定:

与HashSet类似,[LinkedHashSet]为基本操作(添加、包含和删除)提供恒定的时间性能,假设hash函数在bucket之间正确地分散元素


我理解HashSet如何为remove(objectobj)提供恒定的时间性能,但是由于LinkedHashSet也需要维护一个链表,并且移除一个特定的元素需要遍历链表,所以在我看来,remove(objectobj)应该需要线性时间。我遗漏了什么吗

我能想到的唯一解释是,哈希表(由LinkedHashSet维护)中的每个条目都包含对链接列表中相应节点的引用,因此在链接列表中查找节点需要恒定的时间。但我不确定这是否真的是实施


谢谢

LinkedHashSet
除了哈希表之外,还维护节点之间的链接。删除时不必遍历整个列表,只需更新列表邻居。访问特定元素的成本并不比访问
哈希集的成本高

通过哈希代码删除已定位的特定元素是O(1)。只是调整两个环节的问题。哈希表中的每个条目都是链接列表中相应的节点。“删除特定元素需要遍历列表”-不,因为哈希表条目直接指向所需的链接列表节点。