双例集合(一)——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两个,我们会在下一篇文章中对其进行详细介绍。

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

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

相关文章

Javascript--词法作用域

词法作用域 词法阶段 大部分标准化语言编辑器的第一个工作阶段叫做词法化&#xff0c;词法化会对源代码中的字符进行检查&#xff0c;如果是有状态的解析过程&#xff0c;还会赋予单词语义。 简单来说&#xff0c;词法作用域就是在词法阶段的作用域&#xff0c; function fo…

错误模块路径: ...\v4.0.30319\clr.dll,v4.0.30319 .NET 运行时中出现内部错误,进程终止,退出代码为 80131506。

全网唯一解决此BUG的文章&#xff01;&#xff01;&#xff01; 你是否碰到了以下几种问题&#xff1f;先说原因解决思路具体操作1、首先将你C:\Windows\Microsoft.NET\文件夹的所有者修改为你当前用户&#xff0c;我的是administrator。2、修改当前用户权限。3、重启电脑4、删…

前端Vue小兔鲜儿电商项目实战Day01

一、项目介绍 1. 项目技术栈 2. 项目规模 3. 项目亮点 4. 课程安排 5. 适合人群 二、Vue3组合式API体验 1. 通过一个Counter案例体验Vue3新引入的组合式API ①Vue2的代码 <template><button click"addCount"> {{ count }}</button> </templ…

RedisTemplate的Long类型使用increment自增报错

问题描述 代码如下 Resourceprivate RedisTemplate<String,String > redisTemplate;redisTemplate.opsForValue().set("testKey", 0L); redisTemplate.opsForValue().increment("testKey");工作里用Long类型存储评论数&#xff0c;在使用increment自…

GPT-4o和GPT-4有什么区别?我们还需要付费开通GPT-4?

GPT-4o 是 OpenAI 最新推出的大模型&#xff0c;有它的独特之处。那么GPT-4o 与 GPT-4 之间的主要区别具体有哪些呢&#xff1f;今天我们就来聊聊这个问题。 目前来看&#xff0c;主要是下面几个差异。 响应速度 GPT-4o 的一个显著优势是其处理速度。它能够更快地回应用户的查…

基础面试题:在数据库中存储密码?

效率工具 推荐一个程序员的常用工具网站&#xff0c;效率加倍嘎嘎好用&#xff1a;程序员常用工具 云服务器 云服务器限时免费领&#xff1a;轻量服务器2核4G腾讯云&#xff1a;2核2G4M云服务器新老同享99元/年&#xff0c;续费同价阿里云&#xff1a;2核2G3M的ECS服务器只需99…

SCI一区 | Matlab实现PSO-TCN-LSTM-Attention粒子群算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现PSO-TCN-LSTM-Attention粒子群算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现PSO-TCN-LSTM-Attention粒子群算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测预测效果基本介绍程序设…

双指针技巧,链表

双指针链表 虚拟头节点双指针&#xff0c;都要用虚拟1头节点 合并两个有序链表 设置双指针&#xff0c;都指向虚拟头节点 ListNode list1 代表的是头节点 class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode dummynew ListNode(-1…

日用百货元宇宙 以科技创新培育产业新质生产力

当前&#xff0c;我国乳品工业的科技创新进入深水区&#xff0c;不仅对科技的需求加大&#xff0c;还具有跨学科、多领域交叉的显著特征&#xff0c;在引领我国乳制品行业现代化产业体系建设过程中&#xff0c;不断催生新产业、新模式、新动能&#xff0c;面向行业未来的新质生…

windows帐户自动被锁定解决方法

处理方法方法一&#xff1a; 运行-gpedit.msc&#xff0c;打开组策略&#xff0c; 处理方法方法二&#xff1a; 运行-gpedit.msc&#xff0c;打开组策略&#xff0c; 在本地组策略编辑器页面中&#xff0c;选择计算机配置 > Windows设置 > 安全设置 > 账户策略 > 账…

BP神经网络反向传播原理【数学原理、举例说明】

反向传播的基本原理 基本概念什么是链式法则&#xff1f;反向传播的过程反向传播步骤举例&#xff1a;具体计算梯度1. 前向传播&#xff1a;2. 计算损失&#xff1a;3. 反向传播&#xff1a; 为什么梯度的方向是函数值增加最快的方向&#xff1f;1. 梯度的直观理解2. 梯度的定义…

C语言学习笔记之结构篇

C语言是一门结构化程序设计语言。在C语言看来&#xff0c;现实生活中的任何事情都可看作是三大结构或者三大结构的组合的抽象&#xff0c;即顺序&#xff0c;分支&#xff08;选择&#xff09;&#xff0c;循环。 所谓顺序就是一条路走到黑&#xff1b;生活中在很多事情上我们都…

寒冬来了,字节跳动开启裁员新模式。。

大家好&#xff0c;我是白露啊。 不得不说&#xff0c;字节跳动还是真的会搞事啊。 最近一段时间&#xff0c;字节搞出了一个裁员新模式&#xff1a;“细水长流”。这个寓意和“财&#xff08;裁&#xff09;源&#xff08;员&#xff09;广进”计划差不多了&#xff0c;只不…

python如何巧妙地利用内置函数与列表切片组织舞会派对

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、问题分析 三、解决方案 1. 利用内置函数创建参会人员名单 2. 利用列表切片…

【Spring】使用 @Schedule 完成定时任务

在Spring框架中&#xff0c;使用Spring Schedule可以很方便地创建定时任务。以下是一个使用Spring Schedule完成定时任务的DEMO&#xff1a; 引入Spring Boot依赖&#xff1a;在pom.xml文件中添加Spring Boot Starter依赖&#xff0c;这会自动包含Spring Scheduling。 <de…

Redis 事件机制 - AE 抽象层

Redis 服务器是一个事件驱动程序&#xff0c;它主要处理如下两种事件&#xff1a; 文件事件&#xff1a;利用 I/O 复用机制&#xff0c;监听 Socket 等文件描述符上发生的事件。这类事件主要由客户端&#xff08;或其他Redis 服务器&#xff09;发送网络请求触发。时间事件&am…

YashanDB携手慧点科技完成产品兼容认证 助力国产信创生态建设

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB与慧点科技顺利完成兼容性互认证。经严格测试&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;共同支撑政府、企业、金融等办公应用场景下的数字化转型升级&#xff0c;为企业的信息技术应用创新提供坚…

Flutter 中的 CupertinoScrollbar 小部件:全面指南

Flutter 中的 CupertinoScrollbar 小部件&#xff1a;全面指南 在Flutter中&#xff0c;CupertinoScrollbar是Cupertino组件库中的一个widget&#xff0c;它提供了一个具有iOS风格的滚动条&#xff0c;用于增强滚动体验。与标准的Scrollbar类似&#xff0c;CupertinoScrollbar…

【计算机视觉(4)】

基于Python的OpenCV基础入门——色彩空间转换 色彩空间简介HSV色彩空间GRAY色彩空间色彩空间转换 色彩空间转换代码实现: 色彩空间简介 色彩空间是人们为了表示不同频率的光线的色彩而建立的多种色彩模型。常见的色彩空间有RGB、HSV、HIS、YCrCb、YUV、GRAY&#xff0c;其中最…

sql日期函数统计日月年订单数

场景:汇集日月年的订单数,分别在mysql和oracle数据库实现相同的效果 示例1: --创建mysql测试表 drop table test.test; create table test.test ( id bigint(20) NOT NULL AUTO_INCREMENT, name varchar(50) DEFAULT NULL COMMENT 名称, c_date date , PRIMARY KEY (id) ) C…