Map(关联数组)和Set(集合)

news2024/11/26 7:40:02

目录

Map和Set是用来专门查找的数据结构,查找效率非常高

Map是key-value模型(对应了两个东西)

Set是纯key模型(只对应i一个东西)

Map的使用

Map的方法

Map的put()方法

Map的get()方法

Map的getOrdefault()方法

Map的keySet()方法

Map的entrySet()方法

Entry是Map的内部接口类​编辑Entry的方法,v>,v>

Map的values()方法,返回类型是Collection

Map的containsKey()方法

Map的containsValue()方法

Set的使用

Set的方法,

1.有100W个(10个)数据,并且数据有重复的,将所有重复的数据进行去重复

2.有100W个(10个)数据,并且数据有重复的,找到第一个重复的数据

3.统计10W个(几个)数据当中,每个数据出现的次数

4.统计100W个(10个)数据重复数据>=2出现的次数?


Map和Set是用来专门查找的数据结构,查找效率非常高

我们以前也有用来查找的方法比如:

1.直接遍历查找,效率非常

2.二分查找前提还得让数据有序

假如我们将全国人民的身份证信息存储在一个地方然后需要查找某个人的信息就非常麻烦,用直接遍历查找效率非常慢,用二分查找还得把12亿的数据排序一遍,并且它们还非常不适合删除操作

这时候我们就可以用Map或Set两数据结构

Map是key-value模型(对应了两个东西)

key-value模型的意思是 一个关键字对应一个值,

例如:hello在一片文章里出现了几次,hello就是key(关键字),helllo出现的次数就是value(对应的值,这里的值不一定是整数),这里对应了两个东西分别是hello,和hello出现次数

Set是纯key模型(只对应i一个东西)

key模型意思是只有关键字

例如:hello是否出现在某篇文章里

Map的使用

Map是一个接口类,不能实例化,只能实例化实现Map接口的类入TreeMap或HashMap

TreeMap底层是一棵搜索树(红黑树),HashMap底层是一个哈西表

Map的方法

Map的put()方法

Map实现的是TreeMap,由于底层是一棵搜索树(红黑树)它们会这样放

可以发现实现了TreeMap类的由于底层是一颗搜索树(红黑树)它重写了toString方法的同时还对key进行了排序,但要求key能够进行比较(可以实现Comparable接口)

实现了HashMap类由于底层是哈希表,它不要求key一定能够进行比较也并没有根据key排序的同时也没有重写toString()方法

Map的get()方法

根据key名字获取到对应value,没有对应key就返回null

Map的getOrdefault()方法

如果key有返回对应的value值,如果没有就返回默认值

Map的keySet()方法

获取到Map里所有的key值放到Set里,并且还去重,返回类型是Set

Map的entrySet()方法

返回类型是Set<Map.Entry<>>,用于返回所有的key-value关系

Set<Map.Entry<String,Integer>>对应着Map里每条key-value数据,相当于

Map.Entry<String,Integer>对应众多key-value数据里的一条

Entry<K,V>是Map的内部接口类Entry<K,V>的方法

Map的values()方法,返回类型是Collection<v>

返回Map所有的value值,可以有重复

Map的containsKey()方法

判断Map里是否有对应的key值

Map的containsValue()方法

判断Map里是否有对应的Value值

Set的使用

Set只存储Key并且不能重复

为什么Set存储的数据不能重复?

Set的底层是Map,它利用了Map中key不能重复的原则

Set的方法,

具体方法的使用我们就不展开了,写几道题吧

1.有100W个(10个)数据,并且数据有重复的,将所有重复的数据进行去重复

Set是个纯key模型且能够去重复用这个数据结构刚好

2.有100W个(10个)数据,并且数据有重复的,找到第一个重复的数据

3.统计10W个(几个)数据当中,每个数据出现的次数

这里出现了 每个数据 和 次数 两个不同的元素,用key-value模型,

例如hello在文章里出现了几次

4.统计100W个(10个)数据重复数据>=2出现的次数?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenAI开发者大会掀起风暴:GPT模型价格狂降50%,应用商店即将亮相,AI技术将引爆全球!

OpenAI首届开发者大会召开了&#xff01; 关键信息&#xff1a; GPT-4升级版GPT-4 Turbo来了&#xff0c;上下文窗口达到128k&#xff0c;为GPT-4的4倍&#xff1b;OpenAI还降低了几乎所有模型的API使用价格&#xff0c;整体便宜了一半多&#xff1b;GPT-4系列的多模态能力向B…

OAuth2.0双令牌

OAuth 2.0是一种基于令牌的身份验证和授权协议&#xff0c;它允许用户授权第三方应用程序访问他们的资源&#xff0c;而不必共享他们的凭据。 在OAuth 2.0中&#xff0c;通常会使用两种类型的令牌&#xff1a;访问令牌和刷新令牌。访问令牌是用于访问资源的令牌&#xff0c;可…

关于Python hydra库(OmegaConf)(yaml)

这为博友介绍的很清晰&#xff0c;就给大家引荐一下&#xff1a; Python hydra库(OmegaConf)(yaml)_hxxjxw的博客-CSDN博客 安装Python hydra-core我遇到的问题&#xff1a; which pip 确实是虚拟环境&#xff08;pytorch_gpu&#xff09; 依然报错 &#xff1a;ModuleNotF…

字节8年经验之谈 —— 如何从0开始做自动化测试?

自动化测试是使用软件工具在应用程序上自动运行测试的过程&#xff0c;无需任何人为干预。这可以通过减少手动测试的需要来保存时间并提高软件开发过程的效率。由于人为错误或不一致性&#xff0c;手动测试可能容易出错&#xff0c;这可能导致错误未被检测到。自动化测试通过提…

Jenkins 部署.net core 项目 - NU1301错误

/root/.jenkins/workspace/householdess/services/host/fdbatt.monitor.HttpApi.Host/fdbatt.monitor.HttpApi.Host.csproj : error NU1301: 本地源“/root/.jenkins/workspace/householdess/​http:/x.x.x.x:9081/repository/nuget.org-proxy/index.json”不存在。 [/root/.je…

uni-app多端开发

uni-app 多端开发 一、命令创建uni-app 项目二、在微信小程序后台找到 appId 填写 appId三、运行项目四、使用 uni-ui4-1、下载4-2、自动导入4-3、ts项目下载类型校验 &#xff08;uni-ui 组件库&#xff09;4-3-1、下载4-3-2、配置 五、持久化 pinia六、数据请求封装七、获取组…

【FastCAE源码阅读6】C++与Python的集成,实现相互调用

分析FastCAE代码之前先看看C与Python如何相互调用的。 一、C调用Python 先写个C调用Python的例子&#xff0c;然后再来看FastCAE集成Python就比较简单了。直接上代码&#xff1a; #include <iostream> #include "python.h"int main() {Py_Initialize();PyRu…

Android开发自定义实现炫酷的进度条

本篇文章主要记录自定义View实现的水平进度条&#xff0c;包含的主要内容:水平进度条可设置渐变的颜色、在水平进度条上添加开始好结束的图片以及动态添加进度条下面的进度文字说明。下面是效果图展示&#xff1a; 实现的以上效果的主要代码分析说明&#xff1a; 第一步&#…

【开源】基于Vue和SpringBoot的电子元器件管理系统

项目编号&#xff1a; S 002 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S002&#xff0c;文末获取源码。} 项目编号&#xff1a;S002&#xff0c;文末获取源码。 目录 一、摘要1.1 项目简介1.2 项目录屏 二、研究内容三、界面展示3.1 登录&注册&主页…

一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp

前言 大家有使用过.NET开发过OCR工具吗&#xff1f;今天给大家推荐一个基于百度飞桨封装的.NET版本OCR工具类库&#xff1a;PaddleOCRSharp。 OCR工具有什么用&#xff1f; OCR&#xff08;Optical Character Recognition&#xff09;工具可以将图像或扫描文件中的文本内容转…

“找不到emp.dll,无法继续执行代码”的问题要如何修复

今天我想和大家分享的是关于emp.dll缺失的4种解决方法。首先&#xff0c;让我们来了解一下emp.dll缺失的原因以及它是什么文件。 emp.dll是一个动态链接库文件&#xff0c;它位于系统的安装目录下。它是Windows操作系统的一部分&#xff0c;用于支持某些应用程序的正常运行。当…

Python批量导入及导出项目中所安装的类库包到.txt文件(补充)

Python批量导入及导出项目中所安装的类库包到.txt文件 生成requirements文件 建议使用&#xff0c;该方式形成文档最简洁&#xff1a; pip list --formatfreeze > requirements.txt

js树形数组遍历练习,扁平化、格式化、获取节点父级

1.树形数组扁平化 数组扁平化的方式很多&#xff0c;这里主要是用递归处理&#xff0c;除此之外还有正则、扩展运算符等等 const list [{name:1,id:1,children:[{name:11,id:11,children:[{name:111,id:111}]},{name:12},]},{name:2,id:2,children:[{name:21,id:21,children:…

【Redis】set常用命令集合间操作内部编码使用场景

文章目录 前置知识常见命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREM 集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 命令小结内部编码测试内部编码 使用场景 前置知识 集合类型也是保存多个字符串类型的元素的&#xff0c;但和列表类型不同的是&#xff0c;在…

目标检测回归损失函数(看情况补...)

文章目录 L1 loss-平均绝对误差(Mean Absolute Error——MAE)L2 loss-均方误差(Mean Square Error——MSE)Smooth L1 LossMAE、MSE、Smooth L1对比IoU LossGIoU LossDIoU Loss、CIoU LossE-IoU Loss、Focal E-IoU LossReferenceL1 loss-平均绝对误差(Mean Absolute Error——…

kubernetes helm

一、helm Helm是Kubernetes 应用的包管理工具&#xff0c;主要用来管理 Charts&#xff0c;类似Linux系统的yum。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata&#xff0c;以便于应用程序的分发。…

Python算法例9 罗马数字转换为整数

1. 问题描述 给定一个罗马数字&#xff0c;将其转换为整数&#xff0c;要求返回结果的取值为1~3999。 2. 问题示例 Ⅳ→4&#xff0c;Ⅻ→12&#xff0c;ⅩⅪ→21&#xff0c;XCVI→99。 3. 代码实现 def roman_to_int(s):roman_map {I: 1, V: 5, X: 10, L: 50, C: 100, …

软件测试/校招推荐丨鼎捷软件股份有限公司岗位开放

点此获取更多相关资料 软件测试工程师 岗位职责 负责公司产品的日常测试工作&#xff1b;依据软件需求和非功能需求&#xff0c;编写测试方案和测试用例&#xff0c;设计测试脚本&#xff1b;负责服务器系统和软件的日常维护工作&#xff0c;为上线部署和运维活动提供技术支持…

Yakit工具篇:WebFuzzer模块之序列操作

简介 Web Fuzzer 序列就是将多个 Web Fuzzer 节点串联起来&#xff0c;实现更复杂的逻辑与功能。例如我们需要先进行登录&#xff0c;然后再进行其他操作&#xff0c;这时候我们就可以使用 Web Fuzzer 序列功能。或者是我们在一次渗透测试中需要好几个步骤才能验证是否有漏洞这…

VMWare中的Centos7,DHCP获取不到IP地址

Centos是通过桥接的方式连接到主机&#xff0c; 某次开机后&#xff0c;Centos中获取不到&#xff29;&#xff30;地址&#xff0c;可以先卸载主机中的VMware Bridge Protocal. 然后在VMWare中的虚拟网络编辑器中&#xff0c;还原默认设置。 重新开关centos中的网络就可以了。…