本文主要是介绍双例集合(一)——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接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!