• Map和Set的区别


    Map和Set的区别

    -----------------------------------------分割线-----------------------------
      map和set都是stl中的关联容器,map以键值对的形式存储,key=value组成pair,是一组映射关系。set只有值,可以认为只有一个数据,并且set中元素不可以重复且自动排序,如果需要重复则使用multiset,要说区别的话,存储的东西不一样,应用场景不一样,支持的操作也不一样,很多不同。
      map和set支持快速查找和删除,一般使用RB树来实现,当然后面还有用hashtable实现的,使用rb树作为底层结构增删数据都很快,不存在内存移动也就不容易出现迭代器失效的问题,这也就是区别于vector的原因-内存移动
      Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。
      Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现java.util.Comparator接口来自定义排序方式。

    总结如下:

    set是一种关联式容器,其特性如下:

    • set以RBTree作为底层容器
    • 所得元素的只有key没有value,value就是key
    • 不允许出现键值重复
    • 所有的元素都会被自动排序
    • 不能通过迭代器来改变set的值,因为set的值就是键

    map和set一样是关联式容器,它们的底层容器都是红黑树,区别就在于map的值不作为键,键和值是分开的。它的特性如下:

    • map以RBTree作为底层容器
    • 所有元素都是键+值存在
    • 不允许键重复
    • 所有元素是通过键进行自动排序的
    • map的键是不能修改的,但是其键对应的值是可以修改的
  • 相关阅读:
    for-in与不可枚举
    [‘1‘,‘2‘,‘3‘].map(parseInt)的输出结果为什么是[1,NAN,NAN]
    mybatisplus多条件对象xml分页查询
    java循环语句
    PaddleSeg分割框架解读[01] readme解读
    AWS考试认证学习
    2023年行云绽放&傲冠股份厨艺比拼团建活动圆满结束
    PL/SQL 面向对象
    RPC与微服务
    干货 | 师兄手把手教你如何踏上科研道路
  • 原文地址:https://blog.csdn.net/m0_67401270/article/details/126434989