【发布时间】:2012-08-20 18:22:40
【问题描述】:
Java collections/Guava/Apache Commons library 中是否有 Red Black Tree /AVL Tree data 结构实现?如果是的话,你能把它们指给我看吗?基本上我正在寻找一个数据结构,查询应该在 O(lg n) time 发生。数据结构也会有一些更新,但不会像查询那样频繁。
【问题讨论】:
-
一个好的旧哈希表有什么问题?
-
@delnan 是的 hashTable 可能是其中一种选择。我更喜欢像 ConcurrentHashMap 这样的基于哈希的映射,但我仍然想知道这些常用库中是否存在这两种平衡的 BST 数据结构中的任何一种。
-
如果您只需要一张地图(或集合),那么请选择
HashMap,因为它更快(O(1)有一个小因素)。忘记HashTable,因为它已经过时了。如果你需要并发,请采取ConcurrentHashMap。如果您需要订购,请选择TreeMap,不要在意它是 RB-Tree 或 AVL-Tree 或 Splay-tree 之类的。如果您需要其他内容,请扩展您的问题。 -
我的意思是,Guava 的
TreeMultiset在内部使用了 AVL 树... -
@LouisWasserman 感谢提及 TreeMultiset
标签: java data-structures collections tree guava