为什么不使用Hash表
使用Hash表存在的问题:
Hash表必须要有hash算法,这个算法还要足够优秀来保证你的数据能够很好的散列,如果存在大量的hash冲突或者hash碰撞,会导致一部分查询效率非常低
即使算法足够优秀,如果进行范围查询,需要逐一对比每一个元素值,效率很低,并且在生产环境中大部分的查询是范围查询,如果还需要排序那就更低了
hash比较浪费内存空间,而内存是非常宝贵的资源
为什么不使用AVL、BST、红黑树
使用这些二叉树存在的问题:
每一个分支有且尽有两个子节点,当需要向其中插入更多的数据的时候,就必须要增加树的高度,而增加树的高度会导致树变深,会导致IO的次数变多,查询性能会随着数据的增多越来越低
范围查询难以实现