Map<K,V>的使用和List学习

2023-09-21 23:02:56

Map

Map是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。对于静态类型的查找来说,一般直接遍历或者用二分查找【不会对区间进行插入和删除操作】

而在现实生活中的查找比如:

  • 根据姓名查询考试成绩
  • 通讯录,即根据姓名查询联系方式
  • 不重复集合,即需要先搜索关键字是否已经在集合中

注:Map最重要的特性就是去重!
当我们平常在做题时,遇到删除重复数据,或者找每个数据重复的此时等…都可以用Map来解决

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

<K,V>使用的是 key-value模型:
key-value 模型中 key 和 value 是一个整体,就类似于 我们一提起齐天大圣,就想起孙悟空。key-value模型就是类似于这样的一组组合。【key 和 value 互相修饰】

Map中的Value可以使一个链表形式,也就是List类型,这样就可以存储多个数据。这就牵扯到了Map添加时遇到key值重复的数据的处理方法!!!

if (mutableMap.containsKey((dataBuf[i] and 0xff.toByte()).toInt())) {
	var locationList =
		mutableMap[(dataBuf[i] and 0xff.toByte()).toInt()] as MutableList<Int>
	locationList.add(checkSignals(i))
} else {
	val locationList: MutableList<Int> = mutableListOf()
	locationList.add(checkSignals(i))
	mutableMap.put((dataBuf[i] and 0xff.toByte()).toInt(), locationList)
}
方法解释
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 keySet()返回所有 key 的不重复集合
Collection values()返回所有 value 的可重复集合
Set<Map.Entry<K, V>> entrySet()返回所有的 key-value 映射关系
boolean containsKey(Object key)判断是否包含 key
boolean containsValue(Object value)判断是否包含 value

Map是接口类,不能实例化对象,所以只能实例化其实现类TreeMap或者HashMap

Map<String,Integer> map = new TreeMap<>();
Map<String,Integer> map = new HashMap<>();

List

Java创建List的几种方法

//1.通过 new ArrayList<>() 
List <类型> 名称 = new ArrayList<>();
EG: List<String> stringList = new ArrayList<>();
//2. 通过Arrays.asList()
List<String> stringList = Arrays.asList("1", "2", "3");
//3.通过hutool工具类collectionUtil创建 
List<String> stringList = CollectionUtil.newArrayList("1", "2", "3");

hutool 依赖
  <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.5.7</version>
 </dependency>
junit 依赖
<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <!-- 不设置scope就是全局-->
            <scope>test</scope>
//4.List的创建
private var testList : List<Int>? = null
</dependency>

List的类型

在这里插入图片描述

更多推荐

Spring Cloud Alibaba Nacos注册中心(单机)

文章目录SpringCloudAlibabaNacos注册中心(单机)1.docker安装nacos(先别着急)2.配置nacos持久化到mysql、2.1properties文件3.java注册3.1POM文件3.2properties文件3.3测试配置中心4.注册中心4.1配置文件4.2测试类4.3补充演示Spri

Vivado初体验LED工程

文章目录前言一、PL和PS二、LED硬件介绍三、创建Vivado工程四、创建VerilogHDL文件五、添加管脚约束六、添加时序约束七、生成BIT文件八、仿真测试九、下载测试前言本节我们要做的是熟练使用Vivado创建工程并实现对LED灯控制,每秒钟控制开发板上的LED灯翻转一次,实现亮、灭、亮、灭的控制。会控制LED

中国这么多 Java 开发者,应该诞生出生态级应用开发框架

1、必须要有,不然就永远不会有应用开发框架,虽然没有芯片、操作系统、数据库、编程语言这些重要。但是最终呈现在用户面前的,总是有软件部分。而软件系统开发,一般都需要应用开发框架,它是软件系统的基础性部件之一。很多很多软件系统都会有Java开发的部分,尤其是政府部门的软件系统大量的使用了Java。市场非常的大,我们有很多的

【国产32位mcu】电动车控制芯片CS32F031C8T6的应用

近年来,随着“新国标”的落地,双轮电动车在智能化、强性能、安全性等方面不断演进,带动了新一轮的换车高峰。电动车控制器作为双轮电动车的核心部件,迎来新的增长。芯海科技32位MCUCS32F031C8T6,作为电动车控制器的主控MCU芯片,很好地满足了双轮电动车在户外工作中的高温宽、高耐潮的工作环境,以及PWM、ADC等高

《DevOps实践指南》- 读书笔记(八)

DevOps实践指南Part6集成信息安全、变更管理和合规性的技术实践22.将信息安全融入每个人的日常工作22.1将安全集成到开发迭代的演示中22.2将安全集成到缺陷跟踪和事后分析会议中22.3将预防性安全控制集成到共享源代码库及共享服务中22.4将安全集成到部署流水线中22.5保证应用程序的安全性22.6确保软件供应

BD就业复习第三天

1.连续活跃区间表的实现思路实现连续活跃区间表是数据仓库中常见的需求,通常用于分析用户或实体在一段时间内的活跃情况。以下是一种可能的实现思路:1.数据模型设计:首先,您需要设计一个数据模型来存储连续活跃区间。通常,这个表包含以下字段:用户/实体ID:标识活跃实体的唯一标识符。开始日期:活跃区间的开始日期或时间戳。结束日

【DevOps系列】Docker数据卷(volume)详解

【DevOps系列】Docker数据卷(volume)详解文章目录【DevOps系列】Docker数据卷(volume)详解一、概述二、数据卷三、为什么使用数据卷volume数据卷的作用:数据卷的特点:四、数据卷volume基本操作4.1创建数据卷4.2查看数据卷4.3查看数据卷详细信息4.4数据卷删除五、数据卷的使用

Python发布订阅模式

Python发布订阅模式1、broadcast-service模块2、基本使用3、使用装饰器4、发布Topic带参数1、broadcast-service模块Python发布订阅模式可以实现程序间的松耦合broadcast-service是一个轻量级的Python发布订阅者框架,且支持同步、异步、多主题订阅等不同场景下

【Python基础】S01E02 列表

S01E02列表列表是什么列表的操作修改、添加和删除元素列表排序列表倒序列表长度遍历整个列表数值列表创建数值列表数值列表简单统计计算列表推导式列表切片复制列表列表是什么在Python中,用方括号([])表示列表,用逗号分隔其中的元素。bicycles=['trek','cannon','redline','specia

华为OD机试 - 构成正方形的数量 - 数据结构map(Java 2023 B卷 100分)

目录专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出3、说明华为OD机试2023B卷题库疯狂收录中,刷题点这里专栏导读本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新

银行存款问题:整存零取

整存零取月息为0.63%,每年底取出1000,五年刚好取完,计算最初存入金额。(本笔记适合基本熟悉一门编程语言的coder翻阅)【学习的细节是欢悦的历程】Python官网:https://www.python.org/Free:大咖免费“圣经”教程《python完全自学教程》,不仅仅是基础那么简单……地址:https:

热文推荐