在Java Collection Framework中,很多提法都提到了它们在Javadoc中的性能。例如,HashSet说:
该类为基本操作(添加,删除,包含和大小)提供恒定的时间性能,假设散列函数在桶之间正确地分散元素。迭代此集合需要的时间与HashSet实例的大小(元素数量)加上后备HashMap实例的“容量”(桶数)之和成比例。
而ArrayList的说法是:
size,isEmpty,get,set,iterator和listIterator操作以恒定时间运行。
但LinkedList没有说明它的表现。
我相信LinkedList的pop
和push
方法会像计算机科学中的链表一样在恒定时间内运行。但是我担心当我实现一个具有LinkedList参数的方法时可以假设它。
LinkedList有没有理由不说它的表现?
答案 0 :(得分:3)
HashMap.get(Object)
的javadoc也不能保证O(1)的性能,但它是众所周知的。
Javadoc是关于合同,而不是实现。 API合同通常涉及行为,而不是性能SLA。
影响合同的具体实施选择可以记录在javadoc中,但仍属于"合同"。
的主题。