码迷,mamicode.com
首页 > 编程语言 > 详细

Java之集合(七)Map

时间:2017-08-09 20:04:39      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:htm   logs   bsp   jdk   block   部分   .com   相关   jdk8   

  转载请注明源出处: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

标签:htm   logs   bsp   jdk   block   部分   .com   相关   jdk8   

原文地址:http://www.cnblogs.com/lighten/p/7327216.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!