首页
学习
活动
专区
工具
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

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券