Map 集合是用来存储 “键(K)-值(V)”映射对的集合。它是一个接口。它的实现类中,存储“键(K)-值(V)”映射对是经过键来惟一标识,Map 底层的“键(K)”是用Set来存放的。因此自定义的类,存放在Map的实现类中,须要重写hashCode 和 equals 方法。java
经常使用的实现类:HashMap,TreeMap,HashTable。安全
HashMap,HashTable,TreeMap的区别:ide
HashMap:1、线程不安全的,不一样步的;测试
2、能最多存储一个null键,任意多个null值spa
3、有containsKey(),containsValue()方法,没有contains() 方法线程
3、继承AbstractMap<K,V>指针
Hashtable:1、线程安全的,同步的。对象
2、不能有null键,也不能有null值,不然运行时出空指针异常;继承
3、基于陈旧的Dictionary<K,V>类 ,有contains() 方法,用于测试此映射表中是否存在指定值,等同于HashMap类中的containsValue()(本类中也有)接口
TreeMap:线程不安全的,不一样步的。存入的元素的Key,必须是“可比较的”,由于它的key底层使用TreeSet来实现的,即存入的元素必须实现java.lang.Comparable<T>接口,或者是在建立TreeMap对象是指定一个实现java.util.Comparator<T>接口比较器。参考文档JDK API 1.6。
Map接口中定义的方法(只列举经常使用的):
booleancontainsKey(Object key):判断集合Key中是否包含传入的key.
booleancontainsValue(Object value): 判断集合value中是否包含传入的value值。
V get(Object key):根据key获得指定的值。
boolean isEmpty():判断集合是否为空。
V put(K key, Vvalue):将键-值对存入集合中,返回的是value类型的旧值。若是原先没有值,会返回null。
V remove(Objectkey):删除指定的键-值对
int size():返回集合的大小。
void clear():清空集合中的所用内容。
Set<K> keySet();//返回Key的集合,用于遍历Map集合。