java集合学习(2):Map和HashMap

时间:2023-02-26 00:14:25

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类

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

 

HashMap与Map的关系如图:

java集合学习(2):Map和HashMap

从图中可以看出: 
(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机制的。

java集合学习(2):Map和HashMap

 

 

 待续....

 

参考与推荐:

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