关于hashmap和treemap的区别
波波老师好,关于本章中讲的hashmap和treemap,还有hashset和treeset。我看了您的这个回答:
https://class.imooc.com/course/qadetail/261694
现在越来越迷糊了:都是叫做映射,treemap是一对一的映射,但是这一章讲的映射中,是多对一的映射,多个key可能对应一个value。都叫映射,除了底层实现不一样,在应用上,有哪些不同的场景嘛?想看看典型的例子。
正在回答
映射就是一对一的。hashmap 所谓的一对多是内部的具体实现,这个具体实现对用户是不可见的。用户是不知道内部有一对多的关系的。实际上,我们所解决的“哈希冲突”,就是在将这个“一对多”的内部存储结构转变成了用户看到的“一对一”的映射。
这就像优先队列的内部是一棵树,但是这个内部实现对用户是不可见的。用户不需要知道其内部是一棵树。只需要知道对于优先队列,可以入队元素,也可以出队元素,出队的顺序是按照优先级排序的,就够了。
treemap 和 hashmap 最大的区别是 treemap 具有有序性。所以你可以按照顺序遍历 treemap 中的所有键,而 hashmap 不能。我们可以很快的选择 treemap 中对于某一个键,比这个键更大的映射或者更小的映射,但是 hashmap 没有这个能力。
整体在应用上,对于现代系统,基本完全可以默认先使用 hashmap,在发现自己的应用有“有序性”的需求的时候,再转而使用 treemap。
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧