如题,这几种数据结构都是我们平时常用的数据结构。
hash链表: 本质上就是 数组 + 链表
hash树: 本质上就是 数组 + 树。这个树可以是红黑树,B+树,radix_tree等
因为每种数据结构都有自己的优点,缺点。hash链表的各种性能介于 数组和链表之间,hash树的各种性能介于 数组和链表之间。
先看一个摘自网上的图:
首先,它们的程序在不同程度上比数组和链表的复杂;其次,哈希表要求预先知道要存储多少数据,数据对存储空间的利用率也不是非常高。普通的二叉树对顺序的数据来说,会变成缓慢的O(N)级操作;而平衡树编起来显然较为困难。(来自http://hi.baidu.com/haifengjava/blog/item/2e4fc624d974cc0b4d088d13.html)
在取hash数组的id的过程中,利用商,或者余数得到id。利用哪个主要是看是否可以减少对同一