Java中Map集合概述

本文主要为Java中Map集合的概述,至于具体类的实现,未作详细讲解,具体实现原理可参看相关链接以及JDK源码

[TOC]

1. Map集合

  • java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMapHashtableLinkedHashMapTreeMap

  • Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复

  • Map架构

    image

2. HashMap

  • 最常用的Map
  • 根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的
  • HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null
  • HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 CollectionssynchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap
  • HashMap的底层实现基于数组(动态可扩展)+链表(处理冲突)

3. Hashtable

  • 它继承自Dictionary
  • 它不允许记录的键或者值为空
  • 它支持线程的同步,Hashtable在写入时会比较慢

4. LinkedHashMap

  • 继承HashMap,使用双向链表来维护key-value的次序,迭代顺序与插入的顺序保持一致
  • 迭代访问性能更好

5. TreeMap

  • 实现SortMap接口
  • 红黑树数据结构,每个key-value对即作为一个红黑树节点,根据key排序,默认是按键值的升序排序

6. 其他

  • 再次强调,SetMap的关系十分密切,Java源码就是先实现了HashMapTreeMap等集合,然后通过包装一个所有value都为nullMap集合实现Set集合类

相关链接

  • Java HashMap工作原理及实现
  • Java中HashMap,LinkedHashMap,TreeMap的区别
  • Java 集合系列09之 Map架构
  • JDK8源码阅读笔记

你可能感兴趣的:(Java中Map集合概述)