Map 映射接口 概述
Map是一个双列数据,存储K-V类型的数据 JDK1.2
- HashMap 是目前Map的主要实现类 JDK1.2 线程不安全的,效率高,可存储null的key和value
- LinkedHashMap 是HashMap的子类 JDK1.4 遍历Map元素,可以按照添加的顺序实现遍历,在原有的HashMap上添加了一对指针,可指向前一个&后一个对象,如果要频繁遍历适用
- TreeMap 树形映射实现类 JDK1.2 保证按照添加的顺序进行排序,考虑Key的自然排序或定制排序,底层使用红黑树
- HashTable 哈希表,初代目的Map JDK1.0 线程安全,但是效率低,不可存储null的key&value
- Properties 哈希表的子类,处理配置文件,Key&Value必须都是String类型
HashMap底层:
数组 + 链表 (JDK7 -)
数组 + 链表 + 红黑树 (JDK8 +)
Map结构的理解:
Key 无序且不可重复的,使用Set存储所有的Key Key所在的类要重写equals & hashCode方法
Value 无序但可重复的,使用Collection存储所有的Value Value所在的类要重写equals方法
一个键值对:key-value构成了一个Entry对象
Entry 也是无序的不可重复,Entry == Set,所以Set存储了所有的Entry
Map的常用方法: