2011-05-26 22 views
2

有沒有我可以在Java中找到各種數據結構的詳細實現信息的源代碼(HashMap,TreeSets等)。 例如:什麼是用於不同類型的散列函數?它是開放尋址還是其他的東西?類似的東西。 PS:我知道我可以通過源代碼。但是,我會離開一些日子:)在java中的數據結構的內部實現?

+13

來源*是詳細的實施細節。你會期望什麼比這更好? – 2011-05-26 16:31:48

+0

你有沒有試過wikipedia.org?我聽說這是一個很好的資源。 – 2011-05-26 16:34:36

+1

你在尋找什麼級別的細節?我能告訴你的唯一的事情就是一天結束時的一切。 – Woot4Moo 2011-05-26 16:35:16

回答

1

號的API文檔定義了集合類的外部行爲,但沒有實施細則,這可能是供應商特定的。如果你想知道如何在特定的虛擬機中實現這些類,你別無選擇,只能檢查源代碼。

至少AFAIK,沒有Java API的實現,並提供了有關這些特定細節的額外文檔。

4

由於Java是開源的,因此實現本身是最好的選擇。

如果您使用Eclipse並配置了源代碼,只需按住Ctrl +左鍵點擊所需的數據結構聲明即可。 tt將爲此開源。

API文檔不提供實現細節。

2

我不知道你是什麼級別的細節?

我可以告訴你什麼對我來說足夠了。我總是從NetBeans獲得它。在那裏,我可以按住CTRL,點擊任何類名,並將我帶入其代碼。通過這種方式,您可以將文檔和代碼放在您面前的一個位置,您可以看到它們是如何實現的,以及它們在文檔中描述的內容。

希望它有幫助。

編輯:

在HashMap中的行247,這是在HashSet的則在它曾經創造,描述了一個哈希函數也許這就是你想要什麼?

/** 
    * Applies a supplemental hash function to a given hashCode, which 
    * defends against poor quality hash functions. This is critical 
    * because HashMap uses power-of-two length hash tables, that 
    * otherwise encounter collisions for hashCodes that do not differ 
    * in lower bits. Note: Null keys always map to hash 0, thus index 0. 
    */ 
    static int hash(int h) { 
     // This function ensures that hashCodes that differ only by 
     // constant multiples at each bit position have a bounded 
     // number of collisions (approximately 8 at default load factor). 
     h ^= (h >>> 20)^(h >>> 12); 
     return h^(h >>> 7)^(h >>> 4); 
    } 
+0

在HashSet的情況下,什麼是散列函數。 – 2011-05-26 18:36:02

+0

@Kartik Rustagi檢查編輯,也許這是足夠詳細的,我希望。 – Boro 2011-05-26 21:26:58