Map集合接口
Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个 value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。
主要方法:
void clear( )从此映射中移除所有映射关系(可选操作)
void putAll(Map m)从指定映射中将所有映射关系复制到此映射中(可选操作)boolean containsKey(Object k)如果此映射包含指定键的映射关系,则返回 true
boolean containsValue(Object v)如果此映射将一个或多个键映射到指定值,则返回 true
boolean isEmpty( )如果此映射未包含键-值映射关系,则返回 true
boolean equals(Object obj)比较指定的对象与此映射是否相等Set entrySet( )返回此映射中包含的映射关系的 Set 视图
Object get(Object k)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
Object put(Object k, Object v)将指定的值与此映射中的指定键关联(可选操作)
Object remove(Object k)如果存在一个键的映射关系,则将其从此映射中移除(可选操作)int hashCode( )返回此映射的哈希码值
int size( )返回此映射中的键-值映射关系数Set keySet( )返回此映射中包含的键的 Set 视图
Collection values( )返回此映射中包含的值的 Collection 视图
HashMap类
HashMap是非同步的,并且允许null,即null value和null key,但是只能有一个null Key,因为Key是不能重复的,查询的效率比较高,默认初始容量 (16) 和默认加载因子 (0.75) ,底层是数组+链表实现的,JKD1.8底层是数组+链表+红黑树
注意:LinkedHashMap可以按照存入元素顺序存储。
TreeMap类
TreeMap继承Map接口,排序根据红黑树(Red-Black tree)实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
HashMap和Hashtable的区别?
HashMap继承于AbstractMap类,Hashtable继承于Dictionary类
HashMap可以有 null key 和 null value,Hashtable不允许有null key 和 null value
HashMap是非线性安全的,Hashtable是线性安全的
HashMap默认的初始化大小为16,之后每次扩充,容量变为原来的2倍;Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。