如何才能到达Java Hashtable的内部数组表示形式?我知道散列表只是巧妙组织的数组,我想使用每个键的索引,所以我可以并行处理Disjoint集合。散列表内部索引
我需要两件事情之一:
- 用于打开我的钥匙入索引的散列表
- 的键的相应索引的内部阵列中的哈希函数。
如何才能到达Java Hashtable的内部数组表示形式?我知道散列表只是巧妙组织的数组,我想使用每个键的索引,所以我可以并行处理Disjoint集合。散列表内部索引
我需要两件事情之一:
注意1:在90%的情况下,您应该使用HashMap
类而不是Hashtable
。注2:实际上,大多数散列表将列表与一个数组组合在一起,以便处理散列冲突。
一般而言,你是而不是应该能够达到Java实现的类的内部。这将破坏Java的全部目的,提供界面和实现之间明确分离的能力。
我建议你改为创建一个新的类,例如MyHashMap
通过从Java开发工具包复制HashMap
实现的源代码。通过拥有自己的副本,您可以完全控制,并且在JRE更新后您不会受到意外中断。你可以找到OpenJDK HashMap
实现here。
PS:你可能理论上尝试使用反射访问HashMap
内部,但由此产生的代码将是残暴和性能更差......
hashmaps有什么好处?我只是没有了解他们。 –
@BenKellman:在内部,两个类非常相似 - 主要的区别是'Hashtable'是同步的,这通常意味着一个相当不必要的开销。它也比较老,这意味着它的接口相对来说比较杂乱,不再使用新类的接口。 – thkala
我相信你可以使用反射来访问任何字段只看看Hashtable的内部。
或者你只是寻找代码示例?
创建一个类似散列表的类,它按字母顺序将索引分配给键。扩展HashMap或类似的东西对你来说可能不是必需的。应该会很好玩。
我想如果你需要这样的东西,你最好使用你自己的哈希表实现。或从某处复制现有的并使用它。因为如果你使用一些第三方或标准类,那么它的内部实现将会改变,你的程序会崩溃。 –
好的,我只是很忙,希望能够重写我的一个哈希表。无论如何感谢所有人。 –