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

目录

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.mzph.cn/news/135478.shtml

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

相关文章

TensorFlow(1):深度学习的介绍

1 深度学习与机器学习的区别 学习目标&#xff1a;知道深度学习与机器学习的区别 区别&#xff1a;深度学习没有特征提取 1.1 特征提取方面 机器学习的特征工程步骤是要靠手动完成的&#xff0c;而且需要大量领域专业知识深度学习通常由多个层组成&#xff0c;它们通常将更简…

【数据结构】线性表的链式存储结构

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 顺序存储结构的不足的解决办法 从上一节我们对顺序表的讨论中可见,线性表的顺序存储结构的特点是: 逻辑关系上相邻的两个元素在物理位置(内存)上也相邻,因此可以随机存取表中…

持续交付-Jenkinsfile 语法

实现 Pipeline 功能的脚本语言叫做 Jenkinsfile&#xff0c;由 Groovy 语言实现。Jenkinsfile 一般是放在项目根目录&#xff0c;随项目一起受源代码管理软件控制&#xff0c;无需像创建"自由风格"项目一样&#xff0c;每次可能需要拷贝很多设置到新项目&#xff0c;…

Springboot---整合对象储存服务MinIO

OSS 「OSS」的英文全称是Object Storage Service&#xff0c;翻译成中文就是「对象存储服务」&#xff0c;官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。 白话文解释就是将系统所要用的文件上传到云硬盘上&#xff0c;该云硬盘提供了…

FreeRTOS源码阅读笔记1--task.c

在FreeRTOS中&#xff0c;创建任务有两种方式&#xff1a;动态创建和静态创建。区别就是&#xff1a;动态创建任务的栈和任务TCB是由操作系统动态分配&#xff08;malloc&#xff09;内存空间&#xff0c;任务删除时可以释放内存&#xff08;free&#xff09;&#xff1b;而静态…

css设置浏览器表单自动填充时的背景

浏览器自动填充表单内容&#xff0c;会自动设置背景色。对于一般的用户&#xff0c;也许不会觉得有什么&#xff0c;但对于要求比较严格的用户&#xff0c;就会“指手画脚”。这里&#xff0c;我们通过css属性来设置浏览器填充背景的过渡时间&#xff0c;使用户看不到过渡后的背…

Python--快速入门三

Python--快速入门三 1.Python列表 列表是Python用于储存一系列数据的容器(特点是可以存放不同类型的数据) python_list ["键盘",True,66,88.8] 列表是可变数据类型&#xff0c;可以直接对列表中的元素进行更改而不需要赋值给本身 列表方法&#xff1a; 1.appen…

Ubuntu22.04安装MySql

在Ubuntu上安装mysql就比较简单了 1、常规操作&#xff0c;更新软件包列表 apt update 至少安装之前看一眼版本吧 apt list mysql-server 嗯&#xff0c;是8.0.35版本的 2、安装mysql apt install mysql-server 3、给root用户设置密码 # 第一次安装完无需密码,让你输入…

Mysql关联查询

Mysql关联查询 1、数据准备 # 班级表 create table class(id int primary key auto_increment,name varchar(20),description varchar(100) );# 学生表 create table student(id int primary key auto_increment,sn varchar(20),name varchar(20),email varchar(20),class_id…

快速搭建UmiJS4.0项目及常见问题解决方案

yarn create umi选择项目类型 ○ Pick Umi App Template │ Simple App选择创建工具 ○ Pick Npm Client │ yarn选择源 ○ Pick Npm Registry │ taobao启用 Prettier&#xff08;可选&#xff09; yarn umi g √ Pick generator type Enable Prettier -- Setup Pr…

剑指JUC原理-15.ThreadLocal

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

大语言模型比武

今年随着 ChatGPT 的流行&#xff0c;并在各个领域有一定程度生产级别的应用。国内外也掀起了一股大语言模型浪潮&#xff0c;各大厂商都推出了自己的大语言模型&#xff0c;阿里推出了 通义千问&#xff0c;腾讯推出了 Hunyuan&#xff0c;亚马逊云推出了 Titan&#xff0c;大…

Spring中Bean的作用域

2023.11.8 默认情况下&#xff0c;Spring的IoC容器创建的Bean对象是单例的。下面测试一下&#xff1a; 创建一个bean类&#xff1a; package spring6.beans;public class SpringBean { }配置一下xml文件&#xff1a; <?xml version"1.0" encoding"UTF-8&…

【C++】万字一文全解【继承】及其特性__[剖析底层化繁为简](20)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.继承&复用&组合的区别1&…

web框架与Django

web应用程序 什么是web Web应用程序是一种可以通过Web访问的应用程序&#xff0c;程序的最大好处是用户很容易访问应用程序&#xff0c;用户只需要有浏览器即可&#xff0c;不需要再安装其他软件 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序&#xff0c;也就是说这…

web3案例中解决交易所中 ETH与token都是0问题 并帮助确认展示是否成功

可能写了这么久 很多人会发现一个问 我们前面的案例 个人在交易所中的 自定义token 和 ETH 一直是放了个0 大家也不太敢确认是否真的有效 那么 很简单 我们操作 存入一些进交易所 不就ok了 我们 来看之前交易所写的代码 我们写了 depositEther 存入 ETH 和 depositToken 存入…

企业微信开启接收消息+验证URL有效性

企业微信开启接收消息验证URL有效性 &#x1f4d4; 千寻简笔记介绍 千寻简笔记已开源&#xff0c;Gitee与GitHub搜索chihiro-notes&#xff0c;包含笔记源文件.md&#xff0c;以及PDF版本方便阅读&#xff0c;且是用了精美主题&#xff0c;阅读体验更佳&#xff0c;如果文章对…

[云原生案例2.2 ] Kubernetes的部署安装 【单master集群架构 ---- (二进制安装部署)】网络插件部分

文章目录 1. Kubernetes的网络类别2. Kubernetes的接口类型3. CNI网络插件 ---- Flannel的介绍及部署3.1 简介3.2 flannel的三种模式3.3 flannel的UDP模式工作原理3.4 flannel的VXLAN模式工作原理3.5 Flannel CNI 网络插件部署3.5.1 上传flannel镜像文件和插件包到node节点3.5.…

Django框架简介

文章目录 Django框架介绍MVC与MVT模型MVCMTV 版本问题运行django注意事项 Django的下载与基本命令下载Django方式一&#xff1a;在命令界面使用pip安装方式二&#xff1a;使用pycharm安装 Django的基础命令命令行操作pycharm操作 Django项目命令行操作与Pycharm操作的区别应用D…

【K-means聚类算法】实现鸢尾花聚类

文章目录 前言一、数据集介绍二、使用步骤1.导包1.2加载数据集1.3绘制二维数据分布图1.4实例化K-means类&#xff0c;并且定义训练函数1.5训练1.6可视化展示2.聚类算法2.1.可视化生成3其他聚类算法进行鸢尾花分类 前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器…