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