Map和Set的区别「建议收藏」

Map和Set的区别「建议收藏」Map和Set的区别—————————————–分割线—————————–  map和set都是stl中的关联容器,map以键值对的形式存储,key=value组成pair,是一组映射关系。set只有值,可以认为只有一个数据,并且set中元素不可以重复且自动排序,如果需要重复则使用multiset,要说…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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的键是不能修改的,但是其键对应的值是可以修改的
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196423.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月27日 上午10:43
下一篇 2025年9月27日 上午11:15


相关推荐

  • oracle字段精度修改,oracle number类型增加精度

    oracle字段精度修改,oracle number类型增加精度oracle迁移到sqlserver时,报错-如下图,查找原因,发现是因为有些表number类型没有设精度导致的,解决方法如下,修改表结构加上精度,加上之后就可以了。考虑到有些表有多个字段没有设精度,所以采取以下方式实现。–split函数createorreplacetypetype_splitastableofvarchar2(4000);/createorreplace…

    2022年7月24日
    10
  • pycharm 2021.9.2 激活码_在线激活

    (pycharm 2021.9.2 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1S…

    2022年3月27日
    111
  • vue往数组中添加元素_vuejs给数组添加元素[通俗易懂]

    vue往数组中添加元素_vuejs给数组添加元素[通俗易懂]2016-09-13更新问题vuejs给数组添加元素代码是这样的:varvm=newVue({el:”#app”,data:{items:[{id:1,message:’Apple’,selected:false,num:1,price:5},{id:2,message:’Peach’,selected:true,num:1,price:10},{id:3,mes…

    2022年5月23日
    48
  • 替腾讯委屈的程序员,在委屈什么?

    替腾讯委屈的程序员,在委屈什么?

    2026年3月16日
    2
  • 将 VSCode 快捷键修改为 eclipse的快捷键[通俗易懂]

    将 VSCode 快捷键修改为 eclipse的快捷键[通俗易懂]文章目录1、VSCode中打开`命令面板`,如下图所示。2)在命令面板中输入`keyboard`3)打开`首选项:打开键盘快捷方式(JSON)`4)在`keybindings.json`中配置快捷键配置1(常用的快捷键)配置2(最全的快捷键)1、VSCode中打开命令面板,如下图所示。2)在命令面板中输入keyboard在命令面板中输入keyboard,然后在列表中选择首选项:打开键盘快捷方式(JSON):3)打开首选项:打开键盘快捷方式(JSON)点击

    2022年6月3日
    101
  • 使用 HTML、CSS、JS 和 API 制作一个很棒的天气 Web 应用程序

    使用 HTML、CSS、JS 和 API 制作一个很棒的天气 Web 应用程序今天我将使用 Wea ther 和 UnsplashAPI 以及倾斜效果和玻璃形态外观创建凉爽的天气应用程序 Weather io 第 1 步 设置环境并收集所有资源第 2 步 从 index html 开始第 3 步 设置索引文件的样式第 4 步 获取 WeatherAPI 和 UnsplashAPI 密钥第 5 步 从 JavaScript 编码开始第 6 步 免费托管您的网站

    2026年3月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号