zoukankan      html  css  js  c++  java
  • java集合学习(2):Map和HashMap

    Map接口

    java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。

    Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。

    它的基本操作有:添加key-value键值对”、“获取key”、“获取value”、“获取map大小”、“清空map”等基本的key-value键值对操作。

    Map是一个接口不能实例化,Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

    小结:

    • Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储,能够实现根据key快速查找value
    • Map中的键值对以Entry类型的对象实例形式存大
    • 键(key值)不可重复——value值可以

    HashMap类

    • HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现
    • HashMap中的Entry对象是无序排列的
    • Key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key不可重复)

    HashMap与Map的关系如图:

    从图中可以看出: 
    (01) HashMap继承于AbstractMap类,实现了Map接口。Map是"key-value键值对"接口,AbstractMap实现了"键值对"的通用函数接口。 
    (02) HashMap是通过"拉链法"实现的哈希表。它包括几个重要的成员变量:table, size, threshold, loadFactor, modCount。
      table是一个Entry[]数组类型,而Entry实际上就是一个单向链表。哈希表的"key-value键值对"都是存储在Entry数组中的。 
      size是HashMap的大小,它是HashMap保存的键值对的数量。 
      threshold是HashMap的阈值,用于判断是否需要调整HashMap的容量。threshold的值="容量*加载因子",当HashMap中存储数据的数量达到threshold时,就需要将HashMap的容量加倍。
      loadFactor就是加载因子。 
      modCount是用来实现fail-fast机制的。

     待续....

    参考与推荐:

    1、https://www.cnblogs.com/chengxiao/p/6059914.html

    2、https://www.cnblogs.com/skywang12345/p/3311126.html

    3、https://www.cnblogs.com/lzq198754/p/5780165.html

    4、https://www.cnblogs.com/skywang12345/p/3310835.html

    5、Java集合学习手册(1):Java HashMap

    6、HashMap多线程并发问题分析

  • 相关阅读:
    l1-010
    l1-009
    L1-008修改
    l1-008
    Codeforces Round #406 (Div. 2)
    求N!的长度【数学】 51nod 1058 1130
    51nod 1090 & 1267 【二分简单题】
    Codeforces Round #405 (Div. 2)
    Codeforces Round #404 (Div. 2)
    PAT 天梯赛真题集(L2、L3)
  • 原文地址:https://www.cnblogs.com/lisen10/p/10864259.html
Copyright © 2011-2022 走看看