双例集合(一)——Map接口

2024-05-28 23:44
文章标签 接口 map 集合 双例

本文主要是介绍双例集合(一)——Map接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 双例集合简介

         在JDK中,容器可以分为单例集合和双例集合两大类,单例集合用接口Collection来定义其存储特征,而双例集合采用的是Map接口来定义它的存储特征,Map接口与Collection接口是并行的关系。

        在具体说明Map接口的作用之前我们需要先了解什么是双例集合。见名知意,双例集合与单例集合不同,单例集合中每个存储的每个对象都是单独的一个数据或对象,而双例集合却不同,它存储的每一个对象中应该是一个成对的数据或对象,也就是说它存储的每一个元素中应该包含两个数据或者对象,这两个数据中有着某种对应的关系。说道这里,想必大家的脑海中应该浮现出了一个概念——函数。

        JDK中的双例集合可以用数学中的函数来类比学习,但是将其理解为一种特殊的隐射关系或许更为合适,因为双例集合中存贮的对象不一定是一个数,也有可能是任意对象。双例集合中的元素可以分为两个部分,key和value,如果用函数来类比,那么key就相当于函数中的自变量x,而value则对应函数中的因变量y。key和value中间包含着一定的关系,如果是单独的数可以理解为函数关系,如果是其他的对象,则理解为映射更为恰当。

        需要注意的是,这里的key可以理解为就是钥匙,通过钥匙可以找到对应的value的值。但是这个钥匙key有着属于自己的特点。一是在一个双例集合中这个key的值是不能重复的,也就是说,一个key只能对应一个value的值,这就像你有一把钥匙,但是这把钥匙只能开你寝室的门,开不了你隔壁寝室的门一样;二是,value的值是可以重复的,简单来说就是,对于同一扇门,你可以开,你的室友也可以开,多把钥匙可以对应同一扇门。因此双例集合就可以概括成寝室和学生的关系,学生就是key,寝室就是value,学生只可以打开属于自己的寝室的门,不可以打开其他寝室的门,但是同一个寝室的学生打开的是同一个寝室的门。

Map接口

        Map接口定义了双例集合的存储规则。在Map接口中提供了对双例集合中的元素进行操作的抽象方法,常用的有put、putAll、remove、get、containsKey、containsValue、keySet、clear以及Set<Map.Entry<K,V>>   entrySet()。

        V put(K key,V value):把key与value添加到指定的Map集合中;

        void putAll(Map m):将指定双例集合中的映射关系复制到当前的双例集合中;

        V remove(Object key):移除给定的key对应的value的值并将value的值返回;

        V get(Object key):根据指定的key的值,找到对应的value的值并将其返回;

        boolean containsKey(Object key):查找指定的双例集合中是否含有指定的key,含有返回boolean类型的值true,否则返回false;

        boolean containsValue(Object value):查找指定的双例集合中是否含有指定的value,含有返回boolean类型的值true,否则返回false;

        Set keySet():获取指定双例集合中所有的key的值,并将其以单例集合中的Set容器存储,返回一个Set类型的容器;

        void clear():清空指定容器中的所有映射;

        Set<Map.Entry<K,V>>   entrySet():返回一个Set,基于Map.Entry类型包含Map中所有的映射。

        以上介绍了Map接口中常用的抽象方法,其中最难理解的应该是Set<Map.Entry<K,V>>   entrySet(),其实只是描述较为晦涩,它的意思就是用Set容器来存储双例集合中的映射关系,返回一个Set类型的容器,我们遍历这个容器就能得到双例容器中的遍历关系。

        以上的这些方法都是抽象方法,要对其进行使用就必须在Map接口中的实现类中实现这些方法。Map接口的实现类主要有HashMap和TreeMap两个,我们会在下一篇文章中对其进行详细介绍。

这篇关于双例集合(一)——Map接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1012033

相关文章

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例