为什么在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的某些属性.
Actually a treenode is a node of a red-black tree, and needs a parent field, a left field and a right field to form a tree. but I don't see any necessity for it to have some attributes of an LinkedHashMap.Entry.
有人知道原因吗?
推荐答案
可能是因为在 HashMap
和 LinkedTreeNode
中具有单独的 TreeNode
在 LinkedHashMap
中是边际?
Maybe because the gain from having separate TreeNode
in HashMap
and LinkedTreeNode
in LinkedHashMap
is marginal?
还是因为 LinkedHashMap
需要一个 LinkedTreeNode
,它需要从扩展到单独的类?
Or because LinkedHashMap
needs a LinkedTreeNode
that would need to extend from to separate classes?
让我们假设 HashMap
具有一个 HashMap.TreeNode
类,该类仅从 HashMap.Node
扩展.
Let's assume that HashMap
had a HashMap.TreeNode
class that extends solely from HashMap.Node
.
LinkedHashMap
需要类似的类 LinkedHashMap.LinkedTreeNode
,该类需要从 LinkedHashMap.Entry
扩展(反过来又从 HashMap扩展.Node
),但由于这两个类的交织方式,还需要从 HashMap.TreeNode
扩展.
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明确禁止的两个类进行扩展.
That would require extending from two classes, which Java explicitly prohibits.
这篇关于为什么在Java8中HashMap中的TreeNode子类扩展LinkedHashMap.Entry而不是直接扩展HashMap的Node子类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!