转载请注明源出处:http://www.cnblogs.com/lighten/p/7327216.html

1.前言

  按照顺序,本章本是要对Set的相关类进行介绍及讲解的。但是对于其实现有所了解的都应该知道,Set本身的代码十分简单,其实现都是通过Map来实现的,所以本章介绍一下Java中的Map接口及抽象类。

2.Map接口

  除去JDK8添加的新特性不看,Map中定义的方法如下:

  1.size():返回键值对个数

  2.isEmpty():判断是否为空

  3.containsKey(key):键的集合中是否存在所给键

  4.containsValue(value):值的集合中是否存在所给值

  5.get(key):获取指定键的值

  6.put(key,value):存入一对键值对

  7.remove(key):移除指定键的键值对

  8.putAll(Map):将所给的键值对全部存入

  9.clear():清除所有的键值对

  10.keySet():将所有的键值以Set集合返回

  11.values():返回所有值的集合

  12.entrySet():返回键值对的Set集合

  13.getOrDefault():如果该键存在(哪怕对应值为null),返回其值,否则返回所给默认值

  14.putIfAbsent():如果所给键不存在或者存在对应的值为null,重新设置,否则返回其值

  15.remove(key,value):如果所给的值与该键对应的值不相等就不移除该键。

  16.replace(key, oldValue, newValue):如果键所对应的值与所给旧值相等就用新值替换。

  17.replace(key, value):如果该键存在,就用新值替换。并返回之前的值。

  上述所有方法,从getOrDefault就使用了JDK8的新特性,能在接口中实现默认方法。

3.Entry

  Entry是map实现的一个关键数据结构(就是一个键值对对象),关于Entry的接口定义如下:

  1.getKey():获取键值对的键

  2.getValue():获取键值对的值

  3.setValue():设置键值对的值

  后面的方法都是JDK8相关内容,不进行讲解。

4.AbstractMap

  抽象类的实现并没有多大参考价值,就像其它集合一样,大部分子类都覆盖了抽象父类的相关方法。

  size方法就比较很有意思。其使用的是entrySet的大小,而开篇也说了Set是借助Map实现的,其实际上调用的又是Map的size()方法。如果按抽象父类这种写法,那么就死循环了。同样的还有clear方法。

  containsValue或者key都是通过entrySet拿到所有的键值对遍历实现的,实现和其它集合的抽象父类基本一致。之后的get,remove等方法都是一样的原理。其余的方法也不再一一叙述,如果前面几章集合的类认真学习过,这个基本是一样的套路。

Java之集合(七)Map的更多相关文章

  1. java基础集合简介Map(三)下

    --Map接口简介 今天来看一看map集合,map映射接口,用于存放键值对,<key,value>,通过key来查找value,顾名思义key不能为空,唯一且不重复,不然底层怎么查呢! 可 ...

  2. Java:集合,Map接口框架图

    Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...

  3. Java常用的几种集合, Map集合,Set集合,List集合

    Java中  Object是所有类的根 Java集合常用的集合List集合.Set集合.Map集合 Map接口常用的一些方法 size() 获取集合中名值对的数量 put(key k, value v ...

  4. JAVA基础知识之Map集合

    Map的内部结构Entry Set与Map的关系 Map的内部类Entry Map的通用方法及Map的简单用法 HashMap和HashTable的区别 HashMap和HashTable判断元素相等 ...

  5. Java笔记(二十三)……Map集合

    Map接口 Map<K,V> 该集合存储的是键值对,成对往集合里存,而且要保证键的唯一性 常用方法 添加 Vput(K key, V value) voidputAll(Map<? ...

  6. Java基础知识强化之集合框架笔记53:Map集合之Map集合的遍历 键值对对象找键和值

    1. Map集合的遍历(键值对对象找键和值) Map -- 夫妻对  思路:  A: 获取所有结婚证的集合  B: 遍历结婚证的集合,得到每一个结婚证  C: 根据结婚证获取丈夫和妻子 转换:  A: ...

  7. Java基础知识强化之集合框架笔记52:Map集合之Map集合的遍历 键找值

    1. Map集合的遍历  Map -- 夫妻对 思路:  A:把所有的丈夫给集中起来.  B:遍历丈夫的集合,获取得到每一个丈夫.  C:让丈夫去找自己的妻子.  转换:  A:获取所有的键  B:遍 ...

  8. Java基础知识强化之集合框架笔记51:Map集合之Map集合的功能概述与测试

    1. Map集合的功能概述 (1)添加功能 V put(K key,V value):添加元素.这个其实还有另一个功能?先不告诉你,等会讲 如果键是第一次存储,就直接存储元素,返回null 如果键不是 ...

  9. Java集合之Map和Set

    以前就知道Set和Map是java中的两种集合,Set代表集合元素无序.不可重复的集合:Map是代表一种由多个key-value对组成的集合.然后两个集合分别有增删改查的方法.然后就迷迷糊糊地用着.突 ...

随机推荐

  1. 关于linux下/srv、/var和/tmp的职责区分

    转载自:https://blog.csdn.net/u012107143/article/details/54972544?utm_source=itdadao&utm_medium=refe ...

  2. siganl tappII的应用及MATLAB调用

    1.在应用SIGNAL TAPPII时一定要把不用的端口设置为输入三态,否则观察不到数据. 2.用SIGNAL TAPII 观察数据时双向是观察不到数据的,但模块内部用于传输双向口数据的寄存器可以看到 ...

  3. CDialog类

    CDilalog包含三个关键函数:OnInitDialog.OnOK和OnCancel,可以覆盖这三个函数初始化对话框.响应点击OK和Cancel按钮.尽管每个函数都响应一条对话框消息,但是不需要你提 ...

  4. Codeforces801C Voltage Keepsake 2017-04-19 00:26 109人阅读 评论(0) 收藏

    C. Voltage Keepsake time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  5. Chrome For EBS

    https://chrome.google.com/webstore/detail/oracle-ebs-r12-enablement/ekkagabmggbmpmncofhgkfigmeldifnc ...

  6. 可移植类库无法使用async、await关键字

    今天遇到了如题所示的问题,平台已经选择了.net 4.5了,可是就是编译不通过,await关键字下出现了红色下划线. 解决方法:安装一个Bcl的补丁包. https://www.nuget.org/p ...

  7. IDEA13 SVN配置

    这个算是解决了,idea13是支持svn 1.8. 步骤: 1.下载svn客户端软件,小乌龟:TortoiseSVN.安装的时候,一定要选择安装svn命令行的那个选项.当前版本1.8默认只会忽略命令行 ...

  8. openfire消息发送

    找了一些demo,做了一些示例,演示了基于xmpp协议的openfire的客户端之间消息的发送. 代码需要两个包,smack.jar ,smackx.jar. 第一个代码,只是点对点发送消息的,不涉及 ...

  9. 【AppCan 开发者】移动信息化随想

    现在的移动信息化,准确来说,是手机智能网络化.从08年到14年这6年时间里,手机发生翻天覆地的变化,成为移动设备智能中心,取得巨大成就,也成就一批公司,带动移动互联网的发展,引来众多人眼红热血投入.其 ...

  10. 对Cookie和Session的理解

    本篇文章系自己总结经验,如果有朋友感觉哪里有问题,欢迎留言评论,谢谢~! Cookie和Session的产生背景: 在动态页面里面,每个变量都是有有效期的,所有的变量的最大生命周期就是一个脚本的周期( ...