浅谈Java中的Map

Map概述



将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

Map接口和Collection接口有何不同:

  • Map是双列的,Collection是单列的
  • Map的键唯一,Collection的子体系Set是唯一的
  • Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效

Entry

Map中还有一个嵌套接口Entry

成员方法

成员方法


Map中元素的遍历

对于Map中的元素进行遍历的时候,有两种方式:

  • 使用键来找值。先获取Map中键的集合,再根据键获取到其对应的值。
  • 获取Map中的键值对,在键值对中分别获取键和值。

HashMap


基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。
此类不保证映射的顺序,特别是它不保证该顺序恒久不变,即HashMap中的元素的存取顺序是不一致的。此实现不是同步的。

构造方法

成员方法

HashMap和Hashtable的区别

HashMap和Hashtable在方法的使用上,没有多大的区别。在线程安全上有区别。
HashMap:线程不安全,效率高,允许键和值是null。实现不是同步的。
Hashtable:线程安全,效率低,不允许键和值是null。实现是同步的。

LinkedHashMap


Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序),即LinkedHashMap中的元素的存取顺序是一致的。

构造方法

成员方法

TreeMap


基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。 此实现不是同步的。

构造方法

成员方法



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章