双例集合(一)——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

相关文章

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

Java基础回顾系列-第六天-Java集合

Java基础回顾系列-第六天-Java集合 集合概述数组的弊端集合框架的优点Java集合关系图集合框架体系图java.util.Collection接口 List集合java.util.List接口java.util.ArrayListjava.util.LinkedListjava.util.Vector Set集合java.util.Set接口java.util.HashSetjava

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

股票数据接口-陈科肇

陈科肇 新浪财经 sz-深圳sh-上海历史分价表:http://market.finance.sina.com.cn/pricehis.php?symbol=sz000506&startdate=2016-12-27&enddate=2016-12-27历史成交明细(当日成交明细):http://vip.stock.finance.sina.com.cn/quotes_service/v

java集合的概述

集合就是一个容器,我们可以把多个对象放入的容器中。就像水杯(假设容量可以不断扩大)一样,你可以往水杯中不断地添加水,既然是水杯,你就不能往里添加沙子,也就是说集合中添加的对象必须是同一个类型的(引用类型,而不能是基本类型)。 看到集合的介绍会让我们的想起数组,那么集合和数组有什么区别呢? 首先,数组的大小是固定的,而集合理论上大小是不限的。 其次,数组既可以存储基本数据类型的数据,也可以存储