首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

map和unordered_map性能对比

这些天写题目,我就一直想知道这些容易更深层的选择,为什么大多数人更愿意选择哈希表,而不选择map/set?...---- 首先,看底层实现,map的底层实现是红黑树,而unordered_map的底层实现是哈希表。 因此,map内部的元素是有序的,而unordered_map的底层是无序的。...由于map的底层使用的是红黑树,每个节点都需要额外的保存父节点,孩子节点和红/黑性质,导致占用空间颇大。 除非是对顺序有特殊要求的场景,不然我们一般不去选择map。...对于unordered_map,底层实现是哈希表,所以其查找速度会非常快。 对于查找问题,unordered_map的效率不言而喻。 那有什么不好的地方?...对于unordered_map或unordered_set容器,其遍历顺序与创建该容器时输入的顺序不一定相同,因为遍历是按照哈希表从前往后依次遍历的。 我说明白了吗?

1.7K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JDK容器学习之Map: HashMap,TreeMap,LinkedHashMap对比小结

    HashMap, TreeMap, LinkedHashMap 对比 1....应用场景&使用小建议 HashMap, LinkedHashMap, TreeMap 非线程安全,因此都不适用于多线程环境下 希望有序的Map,考虑采用 LinkedHashMap, TreeMap...有自己的排序需求场景的,可以使用TreeMap 根据塞入Map的先后顺序进行排序的,可以使用 LinkedHashMap 其他普通kv接口存储,尽量采用 HashMap 若能确定Map的元素个数,...避免出现大量的hash碰撞(一般不自己覆盖 key的 hashcode 方法,这个问题不太大) 有自定义排序需求时,使用 TreeMap 尽量保证结构的稳定,不会频繁出现添加删除的情况(因为会导致) Map...中不存在两个Key通过定义的比较器,返回0,即不存在类似 HashMap 的碰撞情况 根据进入Map的先后确定遍历顺序,使用 LinkedHashMap 遵从 HashMap 的使用规则 相关博文 JDK

    859100

    再谈Object与Map的使用场景分析:性能对比分析

    Map和Object有非常多相似的地方需要我们去更深入的了解和对比,才能分析出他们分别更适合的应用场景。...(如有疑问可参考:链接)继承:Map是Object的实例对象,而Object显然不可能是Map的实例对象。...所以,针对于存在大量增删操作的场景,使用Map更合适。不同于Object,Map会保留所有元素的顺序。...Map只能通过构造函数方式创建;Map本身具有size属性,Object需要使用 keys()、values()等方法获取;Map本身具有可迭代属性,Object不具有;Map会保持数据的插入顺序,Object...转载本站文章《再谈Object与Map的使用场景分析:性能对比分析》,请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/js/2023_0418

    76410

    再谈Object与Map的使用场景分析:性能对比分析

    Map和Object有非常多相似的地方需要我们去更深入的了解和对比,才能分析出他们分别更适合的应用场景。...(如有疑问可参考:链接)继承:Map是Object的实例对象,而Object显然不可能是Map的实例对象。...所以,针对于存在大量增删操作的场景,使用Map更合适。不同于Object,Map会保留所有元素的顺序。...Map只能通过构造函数方式创建;Map本身具有size属性,Object需要使用 keys()、values()等方法获取;Map本身具有可迭代属性,Object不具有;Map会保持数据的插入顺序,Object...转载本站文章《再谈Object与Map的使用场景分析:性能对比分析》,请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/js/2023_0418

    1.1K00

    【Kotlin】集合操作 ⑤ ( Map 集合 | 获取 Map 值 | Map 遍历 | 可变 Map 集合 )

    文章目录 一、Map 集合 二、获取 Map 值 三、Map 遍历 四、可变 Map 集合 一、Map 集合 ---- 调用 mapOf 函数 创建 Map 集合 , 键值对 元素有两种初始化方式 :...("Tom" to 18, "Jerry" to 12, "Jack" to 20) println(map) val map2 = mapOf(Pair("Tom", 18), Pair...=12, Jack=20} 二、获取 Map 值 ---- 获取 Map 值 : 使用 取值运算符 [] 获取 Map 集合中的值 , 运算符中传入 键 , 如果找不到 键 对应的 值 , 返回 null...; 使用 Map#getValue 函数 , 获取 键 对应的 值 , 如果没有找到则抛出异常 ; public fun Map.getValue(key: K): V =...=20} 18 18 20 88 三、Map 遍历 ---- Map 遍历方式 : forEach 函数 , 传入 Lambda 表达式参数 , 该 Lambda 表达式的参数为 Map.Entry<K

    3.1K40

    有序map和无序map_map怎么实现有序

    目录 为什么会有这篇文章 Map与对象的区别 有序Map 无序Object 总结 为什么会有这篇文章 笔者最近在进行业务开发的时候遇到了遇到了一个数据格式的问题。...Map与对象的区别 Object是JS中的一种数据类型,所有的基础数据类型都继承Object进行实现。 在JS中Map也是继承自Object进行实现的。...有序Map 在JS中有序Map通过Map对象进行实现。...上面的需求通过Map进行实现之后为 无序Object js中常规对象都是无序map,如果属性值中存在typeof Numebr(key) === ‘number’ 为true的情况会顺序不会按照理想的顺序来排列...总结 在JS中使用Map来存储数据如果不涉及枚举或者没有顺序要求使用Object进行实现,如果存在顺序要求使用有序Map进行实现。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    1.2K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券