什么时候使用哈希表?

时间:2014-09-20 10:32:50

标签: java data-structures tree size hashtable

我有一个关于何时应该使用哈希表而不是说AVL树的一般性问题。我记得我的讲师说如果数据大小类似于2 10 或2 20 ,则可以接受AVL树,因为使用哈希表会产生散列操作等。

所以我想在实践中,是否有关于数据大小的一般规则告诉我们何时应该在AVL树上选择哈希表?当处理大于2 20 的数据大小时,哈希表总是首选吗?

1 个答案:

答案 0 :(得分:1)

哈希表是浪费的'因为支持表通常大于条目数,所以内存方式。树没有这个问题,但确实存在查找(以及大多数其他操作)是log(n)操作的问题。所以是的,你是对的,对于小数据集,树可能会更好 - 取决于你对内存效率的关注程度。

没有关于数据大小的一般规则数据 - 它取决于您要比较的实现的具体情况以及您想要优化的内容(内存或CPU)。 Javadocs提供了一些有关Java提供的实现的性能的见解:

http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

除此之外,编写一些基准并比较不同的实现将为您提供更多见解。