java中数据结构的内部实现?

时间:2011-05-26 16:29:45

标签: java data-structures hashmap

是否有源我可以在Java中找到各种数据结构的详细实现信息(HashMaps,TreeSets等)。 例如:用于不同类型的哈希函数是什么?它是开放式寻址还是其他什么?类似的东西。
PS:我知道我可以浏览源代码。但是我将在其他日子离开:)

5 个答案:

答案 0 :(得分:4)

由于Java是开源的,因此实现本身是最好的选择。

如果您正在使用Eclipse并配置了源代码,只需执行ctrl +左键单击所需的数据结构声明即可。 tt将为此开源。

API文档不提供实现细节。

答案 1 :(得分:2)

Javadoc开始,然后在需要时继续使用源代码!

答案 2 :(得分: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);
    }

答案 3 :(得分:1)

答案 4 :(得分:1)

没有。 API文档定义了集合类的外部行为,但没有定义实现细节,这可能是特定于供应商的。如果您想知道如何在特定VM中实现类,除了检查源代码之外别无选择。

至少AFAIK,没有Java API的实现,其中包含可用于此类特定详细信息的其他文档。