当前位置: 首页 > news >正文

MapSet之相关概念

 系列文章:

                 1.   先导片--Map&Set之二叉搜索树

                 2.   Map&Set之相关概念

目录

1.搜索

1.1 概念和场景

1.2 模型

2.Map的使用

2.1 关于Map的说明

2.2 关于Map.Entry的说明

2.3 Map的常用方法说明

3.Set的说明

3.1关于Set说明

3.2 常见方法说明


1.搜索

1.1 概念和场景

Map和Set是专门用于搜索的容器或数据结构,它们的搜索效率取决于具体的实例化子类。传统的搜索方式包括直接遍历和二分查找,但它们有一些限制。

1. 直接遍历:时间复杂度为O(N),当元素数量较多时效率较低。
2. 二分查找:时间复杂度为O(log N),但前提是序列必须是有序的。

这些方法更适合静态类型的查找,即在查找过程中不会进行插入和删除操作。然而,现实生活中的查找需求可能更加复杂,例如:

1. 根据姓名查询考试成绩
2. 不重复集合,需要先检查关键字是否已经存在于集合中

在这些情况下,直接遍历和二分查找可能不太适用,因为它们无法很好地处理动态查找的需求。所以,我们将介绍一种适合动态查找的集合容器:Map和Set。

1.2 模型

在搜索数据时,我们通常将需要查找的数据称为关键字(Key),而与之对应的数据称为值(Value)。这种键值对的结构被称为Key-value。根据实际需求,我们可以使用不同的模型来存储和处理这些键值对:

  • 纯 Key 模型:例如,当我们需要快速查找某个名字是否在某个班级中时,我们只需要知道名字这个关键字即可。在这种情况下,我们只需要存储关键字,而不需要存储与之对应的值
  • Key-Value 模型:例如,当我们需要统计文件中每个单词出现的次数时,我们需要同时存储单词(关键字)和它们出现的次数(值)。在这种情况下,我们需要存储键值对,即每个单词及其对应的次数。

Map是一种用于存储键值对的数据结构,它允许我们通过关键字快速查找对应的值。Set则是一种只存储关键字的数据结构,它主要用于检查某个元素是否存在于集合中。

2.Map的使用

map官方文档

Map (Java Platform SE 8 ) (oracle.com)https://docs.oracle.com/javase/8/docs/api/java/util/Map.html

2.1 关于Map的说明

Map是一个接口类,该类没有继承Collection,Map类中存储是<K,V>结构的键值对,并且K一定是唯一的,不能重复。

2.2 关于Map.Entry的说明

Map.Entry<K, V> Map内部实现的用来存放<key, value>键值对映射关系的内部类,该内部类中主要提供了<key, value>的获取,value的设置以及Key的比较方式。

方法解释
K getKey()返回entry中的key

V getValue()

返回entry中的value
V setValue(V value)将键值对中的value替换为指定的value

注意:Map.Entry<K, V>并没有提供设置Key的方法

2.3 Map的常用方法说明

方法解释
V get(Object key)返回 key 对应的 value
V getOrDefault(Object key, V defaultValue)返回 key 对应的 value,key 不存在,返回默认值
V put(K key, V value)

设置 key 对应的 value

V remove(Object key)删除 key 对应的映射关系
Set<K> keySet()返回所有 key 的不重复集合
Collection<V> values()返回所有 value 的可重复集合
Set<Map.Entry<K, V>> entrySet()返回所有的 key-value 映射关系
boolean containsKey(Object key)判断是否包含 key
boolean containsValue(Object value)判断是否包含 value

1. Map是一个接口,不能直接实例化对象,如果要实例化对象只能实例化其实现类TreeMap或者HashMap 

​​

2. Map 中存储的是键值对(Key-Value),其中 Key 是唯一的,而 Value 可以重复。
3. 可以将 Map 中的所有 Key 提取出来,并存储到一个 Set 中进行访问(因为 Set 不允许重复元素)。
4. 可以将 Map 中的所有 Value 提取出来,并存储到任何 Collection 子类的集合中(Value 可能有重复)。
5. 在 Map 中,不能直接修改 Key,但可以修改 Value。如果要修改 Key,必须先删除原有的键值对,然后再重新插入新的键值对。

3.Set的说明

set官方文档

Set (Java Platform SE 8 )https://docs.oracle.com/javase/8/docs/api/java/util/Set.html

3.1关于Set说明

Set与Map主要的不同有两点:Set是继承自Collection的接口类,Set中只存储了Key。

3.2 常见方法说明

方法解释
boolean add(E e)添加元素,但重复元素不会被添加成功
void clear()清空集合
boolean contains(Object o)判断 o 是否在集合中
Iterator<E> iterator()返回迭代器
boolean remove(Object o)删除集合中的 o
int size()返回set中元素的个数
boolean isEmpty()检测set是否为空,空返回true,否则返回false
Object[] toArray()将set中的元素转换为数组返回
boolean containsAll(Collection<?> c)

集合c中的元素是否在set中全部存在,是返回true,否则返回false

boolean addAll(Collection<? extends E> c)

将集合c中的元素添加到set中,可以达到去重的效果


1. Set 是一个继承自 Collection 的接口类,它专注于存储唯一的元素。
2. 在 Set 中,仅存储 key(关键码),并且这些 key 必须是唯一的。
3. Set 的底层实现通常基于 Map,它利用 key 与一个固定的对象(如 Object 的默认实例)作为键值对存入 Map。
4. Set 的核心功能是去除重复的元素,确保每个元素只出现一次。
5. 由于 Set 中的 key 必须唯一,任何对 key 的修改都是不允许的。如果需要修改 key,只能先删除原有的 key,然后再重新插入新的 key。
6. Set 不允许插入 null 作为 key,以确保 key 的完整性和唯一性。

相关文章:

MapSet之相关概念

系列文章&#xff1a; 1. 先导片--Map&Set之二叉搜索树 2. Map&Set之相关概念 目录 1.搜索 1.1 概念和场景 1.2 模型 2.Map的使用 2.1 关于Map的说明 2.2 关于Map.Entry的说明 2.3 Map的常用方法说明 3.Set的说明 3.1关于Set说明 3.2 常见方法说明 1.搜…...

【大数据】浅谈Pyecharts:数据可视化的强大工具

文章目录 一、引言二、Pyecharts是什么三、Pyecharts的发展历程四、如何使用Pyecharts1. 安装Pyecharts2. 创建图表&#xff08;1&#xff09;导入Pyecharts模块&#xff1a;&#xff08;2&#xff09;创建图表实例&#xff1a;&#xff08;3&#xff09;添加数据&#xff1a;&…...

[深度学习][LLM]:浮点数怎么表示,什么是混合精度训练?

混合精度训练 混合精度训练1. 浮点表示法&#xff1a;[IEEE](https://zh.wikipedia.org/wiki/电气电子工程师协会)二进制浮点数算术标准&#xff08;IEEE 754&#xff09;1.1 浮点数剖析1.2 举例说明例子 1:例子 2: 1.3 浮点数比较1.4 浮点数的舍入 2. 混合精度训练2.1 为什么需…...

openssl双向认证自签名证书生成

编写配置文件openssl.cnf [ req ] distinguished_name req_distinguished_name req_extensions req_ext[ req_distinguished_name ] countryName Country Name (2 letter code) countryName_default US stateOrProvinceName State or Province Name…...

如何使用 Python 读取 Excel 文件:从零开始的超详细教程

“日出东海落西山 愁也一天 喜也一天 遇事不钻牛角尖” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;||Day03为什么要用 Python 读取 Excel 文件&#xff1f;准备工作&#xff1a;安装所需工具安装 Python安装 Pandas安装 openpyxl 使用 Pandas 读取 Excel 文件什么是 …...

仕考网:公务员笔试和面试哪个难?

公务员笔试和面试哪个难?二者之间考察的方向不同&#xff0c;难度也是不同的。 笔试部分因其广泛的知识点和有限的考试时间显得难度更高一些&#xff0c;在笔试环节中&#xff0c;考生需在有限的时间内应对各种问题&#xff0c;而且同时还要面对激烈的竞争&#xff0c;在众多…...

C++知识点总结(55):时间优化

时间优化 一、调试方法1. 输出调试2. 构造样例 二、时间优化1. 前缀和1.1 概念1.2 例题Ⅰ 区间最多数码Ⅱ 双字母字符串Ⅲ Wandering...Ⅳ 数对数目 2. 排序例题选择排序过程 一、调试方法 1. 输出调试 cout 是一个强大的调试工具&#xff0c;可以帮助我们查看程序的状态和变…...

GitHub每日最火火火项目(9.7)

项目名称&#xff1a;polarsource / polar 项目介绍&#xff1a;polar 是一个开源的项目&#xff0c;它是 Lemon Squeezy 的替代方案&#xff0c;具有更优惠的价格。该项目旨在让开发者能够凭借自己的热情进行编码并获得报酬。通过使用 polar&#xff0c;开发者可以更轻松地实现…...

11Python的Pandas:可视化

Pandas本身并没有直接的可视化功能&#xff0c;但它与其他Python库&#xff08;如Matplotlib和Seaborn&#xff09;无缝集成&#xff0c;允许你快速创建各种图表和可视化。这里是一些使用Pandas数据进行可视化的常见方法&#xff1a; 1. 使用Matplotlib Pandas中的plot()方法…...

【周易哲学】生辰八字入门讲解(二)

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解【周易哲学】生辰八字入门讲解&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录 十神十神判断十神类象十神与五行案例 地支藏干藏…...

传统CV算法——基于Opencv的多目标追踪算法

基于 OpenCV 的跟踪算法有多种&#xff0c;每种算法都有其特定的应用场景和优缺点。以下是一些常见的基于 OpenCV 的目标跟踪算法&#xff1a; 1. BOOSTING 跟踪器 描述&#xff1a;基于 AdaBoost 算法的跟踪器。它是一种早期的跟踪算法&#xff0c;使用的是基于弱分类器的强…...

人生苦短我用Python excel转csv

人生苦短我用Python excel转csv 前言准备工作pandas库主要类和方法ExcelFile 类DataFrame 类read_excel 函数to_csv 函数 示例 前言 Excel 文件和csv文件都是常用的电子表格文件格式&#xff0c;其中csv格式更便于用于数据交换和处理。本文使用pandas库将Excel文件转化为csv文…...

Web2和Web3笔记

KimiAI: Web2和Web3是互联网发展的不同阶段&#xff0c;它们代表了不同的技术、理念和用户交互方式。 Web2&#xff1a; Web2通常指的是第二代互联网&#xff0c;它始于2000年代中期&#xff0c;以用户生成内容和社交网络的兴起为标志。 在Web2中&#xff0c;用户不仅是内容的消…...

单元测试 Mock不Mock?

文章目录 前言单元测试没必要?Mock不Mock?什么是Mock?Mock的意义何在? 如何Mock&#xff1f;应该Mock什么&#xff1f;Mock 编写示例 总结 前言 前段时间&#xff0c;我们团队就单元测试是否采用 Mock 进行了一番交流&#xff0c;各有各的说法。本文就单元测试 Mock不Mock…...

常用排序算法(上)

目录 前言&#xff1a; 1.排序的概念及其运用 1.1排序的概念 1.2排序运用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 堆排序 2.1 1 向下调整算法 2.1 2 建堆 2.1 3 排序 2.2 插入排序 2.1.1基本思想&#xff1a; 2.1.2直接插入排序&#xff1a; 2.1.3 插…...

【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十六)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

小程序的页面跳转方式

102. 小程序的页面跳转方式 小程序是一种快速发展的应用形式&#xff0c;为用户提供了便捷的功能和交互体验。其中&#xff0c;页面跳转是小程序中常用的功能之一&#xff0c;本文将介绍小程序的页面跳转方式&#xff0c;并提供代码示例&#xff0c;帮助读者更好地理解和实现页…...

第 21 章 DOM 操作表格及样式

第 21 章 DOM 操作表格及样式 1.操作表格 2.操作样式 DOM 在操作生成 HTML 上&#xff0c;还是比较简明的。不过&#xff0c;由于浏览器总是存在兼容和陷阱&#xff0c;导致最终的操作就不是那么简单方便了。本章主要了解一下 DOM 操作表格和样式的一些知识。 一&#xff0…...

vc-align源码分析 -- ant-design-vue系列

vc-align源码分析 源码地址&#xff1a;https://github.com/vueComponent/ant-design-vue/tree/main/components/vc-align 1 基础代码 1.1 名词约定 需要对齐的节点叫source&#xff0c;对齐的目标叫target。 1.2 props 提供了两个参数&#xff1a; align&#xff1a;对…...

计算机网络(四) —— 简单Tcp网络程序

目录 一&#xff0c;服务器初始化 1.0 部分文件代码 1.1 关于Tcp协议 1.2 创建和绑定套接字 1.3 监听 二&#xff0c;服务器启动 2.1 获取连接 2.2 提供服务 2.3 客户端启动源文件 Main.cc 二&#xff0c;客户端编写 2.1 关于Tcp客户端 2.2 客户端代码 2.3 效果…...

sudo企业级应用【20260525】001篇

文章目录 一、总体设计思路 1️⃣ 设计原则 2️⃣ 日志策略(重点) 二、10 个真实生产场景(含 sudoers 配置) 🔹 Linux 系统管理(3 个) ✅ 场景 1:基础运维(用户 / 权限) ✅ 场景 2:磁盘与文件系统 ✅ 场景 3:网络与防火墙 🔹 云管理(2 个) ✅ 场景 4:云 CLI …...

Mysql:事务管理(中)

在前面的章节中&#xff0c;我们提到了 MVCC&#xff08;多版本并发控制&#xff09;&#xff0c;它巧妙地通过“版本快照”解决了“读-写”冲突&#xff0c;实现了非阻塞读。但如果两个事务同时执行 UPDATE 操作修改同一行数据&#xff0c;即 写-写&#xff08;Write-Write&am…...

3分钟解锁网易云音乐NCM文件:ncmdumpGUI小白也能懂的完整教程

3分钟解锁网易云音乐NCM文件&#xff1a;ncmdumpGUI小白也能懂的完整教程 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经下载了网易云音乐的歌曲&a…...

开源ELM327 OBD-II适配器:从硬件设计到多协议固件实现全解析

1. 项目概述&#xff1a;开源ELM327 OBD适配器如果你对汽车诊断、数据监控或者嵌入式开发感兴趣&#xff0c;那么自己动手做一个OBD-II适配器绝对是个能让你学到很多东西的硬核项目。今天要聊的&#xff0c;就是一个完全开源的、基于NXP LPC1517微控制器的ELM327兼容OBD适配器。…...

用Azure Kinect DK和Body Tracking SDK,5分钟实现一个实时人体骨骼点检测Demo(C++版)

5分钟实战&#xff1a;用Azure Kinect DK实现实时人体骨骼点追踪&#xff08;C版&#xff09; 当你第一次拿到Azure Kinect DK时&#xff0c;最令人兴奋的莫过于它强大的人体追踪能力。这款深度相机不仅能捕捉高清彩色图像&#xff0c;更能通过AI算法实时重建人体骨骼关节点。本…...

Unity项目DrawCall降不下来?试试用Mesh Baker合并贴图集,保姆级图文教程

Unity性能优化实战&#xff1a;用Mesh Baker合并贴图集降低DrawCall全流程解析当你的Unity项目帧率开始卡顿&#xff0c;Profiler里DrawCall数字居高不下时&#xff0c;合并贴图集往往是解决问题的关键一步。本文将以一个实际项目为例&#xff0c;带你从零开始使用Mesh Baker的…...

网飞成立 AI 动画工作室,开启流媒体“原生 AI 制片时代”,中外布局逻辑有何不同?

1. Netflix“偷跑”在影视巨头关于 AIGC 的军备竞赛中&#xff0c;Netflix 再次加速。据外媒 TheVerge 报道&#xff0c;网飞于今年 3 月成立了名为 "INKubator" 的工作室&#xff0c;这是全球流媒体巨头中首个以生成式人工智能为核心的动画制作部门。此动作引发全球…...

机器学习与深度学习在社交媒体心理健康检测中的权衡与选择

1. 项目概述&#xff1a;当AI遇见心灵&#xff0c;社交媒体心理健康检测的技术十字路口在社交媒体成为我们数字生活延伸的今天&#xff0c;海量的文本数据无意中记录着用户的情感波动与心理状态。作为一名长期混迹于数据科学和自然语言处理&#xff08;NLP&#xff09;一线的从…...

AI算法工程师必学的Python库:这10个库,AI开发必备

对于软件测试从业者来说&#xff0c;随着人工智能技术在测试领域的渗透越来越深——从自动化测试用例生成到缺陷智能预测&#xff0c;从测试结果分析到测试环境智能化调度&#xff0c;掌握AI开发的核心工具链已经成为从功能测试向AI测试开发、智能化测试转型的核心竞争力。Pyth…...

城通网盘直链解析终极指南:3分钟告别广告等待

城通网盘直链解析终极指南&#xff1a;3分钟告别广告等待 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘下载而烦恼吗&#xff1f;每次下载都要面对烦人的广告等待&#xff0c;还要输入…...