zoukankan      html  css  js  c++  java
  • Java-集合第五篇Map集合

    1、什么是Map集合。

       

       Map用于保存具有映射关系的数据。key和value都可以是任意引用类型,但key不允许重复,即同一个Map的任何两个key通过equals方法比较总是返回false。

      从Java源码看,Java是先实现了Map,然后通过包装一个所有value都为null的Map就实现了Set集合。Set有HashSet、LinkedHashSet、SortedSet(接口)、TreeSet、EnumSet,而Map有HashMap、LinkedHashMap、SortedMap(接口)、TreeMap、EnumMap。

      Map的value放在一起看,又像是一个List:元素之间可以重复,每个元素可以根据索引查找,只是索引不再是数字,而是另一个对象。Map接口定义的常用方法有:

      

    2、Map包括一个内部类Entry,该类封装了一个key-value对。Entry包含3个方法:

      1》Object getKey():返回该Entry里包含的key值。

      2》Object getValue():返回该Entry里包含的value值。

      3》Object setValue(V value):设置Entry里包含的value值,并返回新设置的value值。

    3、Java 8为Map新增的方法

       

     

    4、Java 8改进的HashMap和Hashtable实现类

      HashMap和Hashtable典型的区别:

      Hashtable:它是一个古老的类。它是一个线程安全的Map实现类(其实早于Map接口出现)。当HashMap不是线程安全的实现类。HashMap可以通过Collections工具类将其包装为线程安全的。

      Hashtable:不允许使用null作为key和value。但HashMap可以使用null作为key或value。(HashMap中只可以有一个key为null的键值对,但可以有无数多个value为null的键值对。)

      为了在HashMap、Hashtable中存储、获取对象,用作key的对象必须实现hashCode()方法和equals()方法。HashMap、Hashtable判断两个key相等的标准是:两个key通过equals()方法比较返回true,两个key的hashCode值也相等

       HashMap、Hashtable中还包含了一个containsValue()方法,用于判断是否包含指定的value。判断标准时两个value的equals()方法比较返回true。

    5、LinkedHashMap

      使用双向链表来维护key-value对的次序(只需要考虑key的次序),该链表负责维护Map的迭代顺序,迭代次序与键值对插入的顺序一致。即LinkedHashMap只需要维护键值对的插入顺序,不需要额外的排序开销。

    6、Properties

      使用Properties读写属性文件。其key、value都是字符串类型,提供了3个方法修改Properties中的key、value的值:

         

        

    7、SortedMap、TreeMap

     8、WeakWeakHashMap

    9、identityHashMap

    10、EnumMap

    11、各Map实现类的性能分析

    12、HashSet、HashMap的性能选项

  • 相关阅读:
    C/C++ 编写一个通用的Makefile 来编译.c .cpp 或混编
    C/C++ 定义接口文件格式
    MySql存储过程例子1
    项目所遇问题
    linux下编译C++程序无法链接Mysql的问题
    linux 同步时间 调试core内核
    CentOS安装与更新git
    03 js基本数据类型、 js运算符1
    02 js运行原理 、js开发工具介绍 、js程序入门、 js基本语法
    01 js基本介绍
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/11392776.html
Copyright © 2011-2022 走看看