繁体   English   中英

为什么在 Java8 中 HashMap 中的 TreeNode 子类扩展 LinkedHashMap.Entry 而不是直接扩展 HashMap 的 Node 子类?

[英]why in Java8 the TreeNode subclass in HashMap extends LinkedHashMap.Entry instead of directly extending HashMap's Node subclass?

实际上,treenode 是红黑树的一个节点,需要一个父域、一个左域和一个右域来组成一棵树。 但我认为它没有任何必要具有 LinkedHashMap.Entry 的某些属性。

有谁知道原因吗?

也许是因为在HashMap中拥有单独的TreeNode和在LinkedHashMap中拥有LinkedTreeNode的收益是微不足道的?

还是因为LinkedHashMap需要一个LinkedTreeNode需要从扩展到单独的类?

让我们假设HashMap有一个HashMap.TreeNode class 仅从HashMap.Node扩展而来。

LinkedHashMap needs a similar class LinkedHashMap.LinkedTreeNode that needs to extend from LinkedHashMap.Entry (which in turn extends from HashMap.Node ), but would also need to extend from HashMap.TreeNode because of the way the two classes are interwoven.

这需要从两个类扩展,Java 明确禁止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM