2009-08-13 92 views
21

任何人都可以給我提供一個網站,其中包含主要Java數據結構的摘要以及它們各自在時間上的複雜性(對於某些給定的操作,如添加,查找,刪除等)。 Hashtable s是O(1)用於查找,而LinkedList s是O(n)。一些細節,如內存使用情況也會很好。Java數據結構參考

這對於思考算法的數據結構真的很有幫助。

+1

除了Javadocs? – 2009-08-13 21:30:55

+1

是的,java文檔讓它們全部分開,複雜性不是很容易找到。我不想每個細節,只是一個時間複雜的總結 – 2009-08-13 21:31:52

回答

23

有什麼理由認爲Java的實現是不同的(在複雜性方面)比一般的,與語言無關的實現?換句話說,爲什麼不只是指一般參考的各種數據結構的複雜性:

NIST Dictionary of Algorithms and Data Structures

但是,如果你堅持針對Java:

Java standard data structures Big O notation

Java Collections cheatsheet V2(無效鏈接,但this is the first version of the cheatsheet

+4

感謝http://simplenotions.wordpress.com/2009/05/13/java-standard-data-structures-big -o-notation/ – 2010-08-09 08:57:02

+0

其中兩個鏈接已死亡。我會編輯它,但我不得不改變你的帖子的含義。 – Daniel 2013-04-17 17:37:19

+0

我現在更新了一個鏈接 – bluish 2013-06-12 12:07:25

0

我不認爲有任何單一的網站概述這個(聽起來像一個項目,雖然好主意)。我認爲問題的一部分是對每個算法運行的理解非常重要。大多數情況下,這聽起來像你理解Big-O,所以我會用它作爲你最好的猜測。跟隨它進行一些基準測試/分析,看看哪些運行速度更快/更慢。

而且,是的,Java docs應該在java.util有大部分此信息。

0

主集合類的時間和空間複雜性應與數據結構已知時間補xity。我認爲Java沒有具體的東西,例如(如你所說)散列查找應該是O(1)。你可以看看herehere