Map接口
概述
java.util接口 Map<K,V>
双列数据,存储key-value对的数据 —类似于高中的函数:y = f(x)类型参数: K - 此映射所维护的键的类型V - 映射值的类型。也叫哈希表、散列表。常用于存 键值对 结构的数据。其中的键不能重复,值可以重复.
特点
可以根据键 提取对应的值键不允许重复,如果重复值会被覆盖存放的都是无序数据初始容量是16,默认的加载因子是0.75
继承结构
Map结构的理解:
Map中的key:无序的、不可重复的,使用Set存储所有的key —> key所在的类要重写equals()和hashCode()(以HashMap为例)
Map中的value:无序的、可重复的,使用Collection存储所有的value —>value所在的类要重写equals()
一个键值对:key-value构成了一个Entry对象。
Map中的entry:无序的、不可重复的,使用Set存储所有的entry
HashMap:
作为Map的主要实现类,线程不安全,效率高:能存储null的key和value
HashMap的底层:
数组+链表 (jdk7及以前)数组+链表+红黑树 (jdk8及以后)
LinkedHashMap:
在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素,保证在遍历map元素时,可以按照添加的顺序实现遍历。对于频繁的遍历操作,此类执行效率高于HashMap
TreeMap:
保证按照添加的key-value对进行排序,实现排序遍历,此时考虑key的自然排序或定时排序底层是红黑树
Hashtable:
作为古老的实现类,线程安全的,效率低,不能null的key和value.
Properties:
常用来处理配置文件,key和value都是string类型.
常用方法