TreeMap基于红黑树实现,时间复杂度平均能达到O(log n)。
HashMap基于散列表实现,时间复杂度平均能达到O(1)。
HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。
在Map 中插入、删除和定位元素,HashMap是最好的选择。
TreeMap取出来的是排序后的键值对。插入、删除需要维护平衡会牺牲一些效率。但如果要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
由于跳表Skip List内部结构简单,所以实现容易;同时,由于没有平衡树那样的插入删除re-balance问题,使得并发控制粒度很细,也简单很多,非常适合高并发场景。所以,在NoSQL开源工具里,Google的LevelDB,以及Redis,都使用跳表作为“外排序”的基础数据结构。