我是新來的java,特別是java集合。 Java數據結構TreeMap沒有任何方法(如getChildren,getParent)表明它擁有分層結構。單詞樹在類名中的意義是什麼?在TreeMap中,樹是什麼意思?
0
A
回答
0
「樹」部分給出了類的實現細節。按照documentation,TreeMap
是
一個Red-Black tree基於
NavigableMap
實現。
名稱OrderedMap
或SortedMap
可能會更好,但「樹」是不夠好,傳達類的工作它的用戶的方式。
0
A 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告訴我們,實現細節不應暴露
0
的數據結構是主要的地圖,沒有一棵樹。但是地圖是用樹來實現的。 TreeMap提供了一種有效的方式來按鍵排序存儲鍵/值對,並允許快速檢索。由於它是用戶的地圖,因此不需要獲取樹中任何節點的父節點或其子節點,因此沒有getParent
或getChildren
函數可用。
0
換句話說,TreeMap意味着它是一個Map實現,其中數據以樹狀結構存儲。這導致這樣的事實,即元素按鍵排序(TreeMap實現SortedMap)。
這是good visualisation of red-black tree。
Java中的其他類型的地圖是HashMap和LinkedHashmap。 你可以找到差異here。
相關問題
- 1. 是什麼意思:是什麼意思?
- 2. 是什麼意思,在Python中是什麼意思?
- 3. 什麼意思:在x86中是什麼意思?
- 4. 什麼?在C#中是什麼意思?
- 5. %{}是什麼意思?
- 6. '#'是什麼意思?
- 7. 「?」是什麼意思?
- 8. #{...}是什麼意思?
- 9. || =是什麼意思?
- 10. @是什麼意思
- 11. $$ $$是什麼意思?
- 12. `/ * @`是什麼意思?
- 13. 「=」是什麼意思
- 14. + =是什麼意思?
- 15. {..} [..]是什麼意思?
- 16. 什麼是:!:意思?
- 17. @ []是什麼意思?
- 18. 什麼是「||」意思?
- 19. /([^.]*)\.(.*)/是什麼意思?
- 20. &**是什麼意思?
- 21. @(...)是什麼意思?
- 22. &@是什麼意思?
- 23. 「\\。\」,「\ ?? \」,「\\?\」,「\\」是什麼意思?
- 24. &=是什麼意思?
- 25. {%=%}是什麼意思?
- 26. 是什麼意思?
- 27. %%是什麼意思?
- 28. {}是什麼意思?
- 29. 「*&」是什麼意思?
- 30. 「_」是什麼意思?
您是否閱讀過此Java類上的官方JavaDoc:http://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html? – MWiesner
贊成票。 http://stackoverflow.com/questions/33251375/java-why-treemap-is-called-tree-map –