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

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值