我是java新手,特别是java集合。 Java数据结构TreeMap没有任何方法(如getChildren,getParent)来表明它拥有层次结构。词类在类名中有什么意义?
答案 0 :(得分:0)
“树”部分给出了该类的实现细节。根据{{3}},TreeMap
是
基于documentation的
NavigableMap
实施。
名称OrderedMap
或SortedMap
可能会更好,但“树”足以传达班级对其用户的工作方式。
答案 1 :(得分:0)
TreeMap
本质上是一个Red-black
树,它是一个平衡搜索树。此树的主要用途是确保O(lg(n))
查找,而不是对层次结构进行建模。
如果你看一下TreeMap的代码,你会发现它有TreeMap.Entry,定义如下。
static final class Entry<K,V> implements Map.Entry<K,V> {
K key;
V value;
Entry<K,V> left;
Entry<K,V> right;
Entry<K,V> parent;
boolean color = BLACK;
..
}
但是OOP告诉我们不应该公开实现细节
答案 2 :(得分:0)
数据结构主要是地图,而不是树。但是地图是使用树实现的。 TreeMap提供了一种以排序顺序存储键/值对的有效方法,并允许快速检索。由于它是用户的映射,因此您无需获取树中任何节点的父节点或其子节点,因此无法使用getParent
或getChildren
函数。
答案 3 :(得分:0)
用两个词来说,TreeMap意味着它是一个Map实现,其中数据存储在树状结构中。这导致元素按其键排序(TreeMap实现SortedMap)。
这是good visualisation of red-black tree。
Java中的其他类型的地图是HashMap和LinkedHashmap。 您可以找到差异here。