Map 集合是用来存储 “键(K)-值(V)”映射对的集合。它是一个接口。它的实现类中,存储“键(K)-值(V)”映射对是通过键来唯一标识,Map 底层的“键(K)”是用Set来存放的。所以自定义的类,存放在Map的实现类中,需要重写hashCode 和 equals 方法。
常用的实现类:HashMap,TreeMap,HashTable。
HashMap,HashTable,TreeMap的区别:
HashMap:1、线程不安全的,不同步的;
2、能最多存储一个null键,任意多个null值
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集合。