zoukankan      html  css  js  c++  java
  • Java之集合(七)Map

      转载请注明源出处: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等方法都是一样的原理。其余的方法也不再一一叙述,如果前面几章集合的类认真学习过,这个基本是一样的套路。

  • 相关阅读:
    数组的学习(一)
    Servlet是线程安全吗?
    MySql用户管理:添加用户、授权、删除用户
    泛型(二)
    泛型(一)
    Spring MVC
    spring框架
    mybatis基础
    Hibernate 基础
    Java局部类
  • 原文地址:https://www.cnblogs.com/lighten/p/7327216.html
Copyright © 2011-2022 走看看