为什么LinkedList的javadoc不能保证pop和push的持续时间性能?

时间:2015-05-18 02:13:18

标签: java collections linked-list javadoc

在Java Collection Framework中,很多提法都提到了它们在Javadoc中的性能。例如,HashSet说:

  

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

而ArrayList的说法是:

  

size,isEmpty,get,set,iterator和listIterator操作以恒定时间运行。

但LinkedList没有说明它的表现。

我相信LinkedList的poppush方法会像计算机科学中的链表一样在恒定时间内运行。但是我担心当我实现一个具有LinkedList参数的方法时可以假设它。

LinkedList有没有理由不说它的表现?

1 个答案:

答案 0 :(得分:3)

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

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

影响合同的具体实施选择可以记录在javadoc中,但仍属于"合同"。

的主题。