为什么LinkedList的javadoc不能保证pop和push中的恒定时间性能?

为什么LinkedList的javadoc不能保证pop和push中的恒定时间性能?,java,collections,linked-list,javadoc,Java,Collections,Linked List,Javadoc,在Java集合框架中,很多实现都提到了它们在Javadoc中的性能。例如,HashSet说: 假设散列函数将元素正确地分散在存储桶中,则该类为基本操作(添加、删除、包含和大小)提供恒定的时间性能。迭代这个集合需要的时间与HashSet实例的大小(元素数)加上支持HashMap实例的“容量”(bucket数)之和成比例 ArrayList's说: size、isEmpty、get、set、iterator和listIterator操作以固定时间运行 但LinkedList对其表现只字不提 我相信L

在Java集合框架中,很多实现都提到了它们在Javadoc中的性能。例如,HashSet说:

假设散列函数将元素正确地分散在存储桶中,则该类为基本操作(添加、删除、包含和大小)提供恒定的时间性能。迭代这个集合需要的时间与HashSet实例的大小(元素数)加上支持HashMap实例的“容量”(bucket数)之和成比例

ArrayList's说:

size、isEmpty、get、set、iterator和listIterator操作以固定时间运行

但LinkedList对其表现只字不提

我相信LinkedList的
pop
push
方法就像计算机科学中的链表一样,在固定的时间内运行。但我担心,当我实现一个具有LinkedList参数的方法时,可以假设这一点

LinkedList有什么理由不说它的性能吗?

的javadoc也不能保证O(1)性能,但它是众所周知的

Javadoc是关于合同,而不是实现。API契约通常关注行为,而不是性能SLA

影响合同的具体实现选择可能会记录在javadoc中,但这仍然属于“合同”的主题。

javadoc for也不能保证O(1)性能,但它是众所周知的

Javadoc是关于合同,而不是实现。API契约通常关注行为,而不是性能SLA

影响合同的具体实现选择可能会记录在javadoc中,但这仍然属于“合同”的主题。

javadoc for也不能保证O(1)性能,但它是众所周知的

Javadoc是关于合同,而不是实现。API契约通常关注行为,而不是性能SLA

影响合同的具体实现选择可能会记录在javadoc中,但这仍然属于“合同”的主题。

javadoc for也不能保证O(1)性能,但它是众所周知的

Javadoc是关于合同,而不是实现。API契约通常关注行为,而不是性能SLA


影响合同的具体实现选择可能会记录在javadoc中,但这仍然属于“合同”的主题。

这是对类似问题的一个很好的回答:
LinkedList
似乎没有说明其任何操作的性能。我不知道为什么——这不仅仅是关于
pop
push
。这是对一个类似问题的一个很好的回答:
LinkedList
似乎没有说明任何操作的性能。我不知道为什么——这不仅仅是关于
pop
push
。这是对一个类似问题的一个很好的回答:
LinkedList
似乎没有说明任何操作的性能。我不知道为什么——这不仅仅是关于
pop
push
。这是对一个类似问题的一个很好的回答:
LinkedList
似乎没有说明任何操作的性能。我不知道为什么——这不仅仅是关于
pop
push
。HashMap保证“假设哈希函数将元素正确地分散在存储桶之间,那么该实现为基本操作(get和put)提供了恒定的时间性能。”所以我可以假设这些方法在固定时间内运行。我不认为
HashMap.get(Object)
实际上是O(1)。如果以某些方式使用,它在实践中可能是O(1)。但你提到的是一份合同,这需要一个比“实践中通常是O(1)”更严格的数学断言。而这是用
HashMap
无法实现的。首先,用户可能会提供一个错误的哈希函数。其次,即使有一个好的散列函数,当元素的数量大大超过散列桶的数量时,时间显然与元素的数量成正比(如果桶是线性实现的),这意味着它实际上是O(n)。HashMap保证“此实现为基本操作提供恒定的时间性能(get和put),假设散列函数将元素正确地分散在存储桶中。“因此,我可以假设这些方法在固定时间内运行。我不认为
HashMap.get(Object)
实际上是O(1)。它可以是O(1)但你提到的是一份合同,这需要一个比“实践中通常是O(1)”更严格的数学断言。而这不能用
HashMap
实现。首先,用户可能会提供一个不好的哈希函数。其次,即使使用一个好的哈希函数,当元素的数量大大超过哈希桶的数量时,时间显然与元素的数量成正比(如果桶是线性实现的)HashMap保证“这个实现为基本操作(get和put)提供了恒定的时间性能,假设hash函数将元素正确地分散在存储桶中。”因此我可以假设这些方法在恒定的时间内运行。我不认为
HashMap.get(Object)
真的是O(1)不管怎么说,如果以某种方式使用,它在实践中可能是O(1)。但你提到的是一个合同,而且它需要比“实践中通常是O(1)”更严格的数学断言。这是用
HashMap
无法实现的。首先,用户可能会提供一个不好的哈希函数。其次,即使是一个好的哈希函数,当元素数量大大超过nu时