2011-05-26 79 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