Map<K,V>:双列集合,一次存一对,键值对。要保证键的唯一性。
1、共性功能:
(1)添加 V put(key,value) 该方法返回上一个此位置的值 void putAll(Map<K,V> map)
(2)删除 void clear() V remove(key)
(3)判断 boolean containsKey(object) boolean containsValue(object) boolean isEmpty()
(4)获取 V get(key) int size()
2、特有功能:
(1)Set<K> keySet() : 取出所有的键,并存储到Set集合中
*遍历Map集合:用keySet(),在用迭代器方式
(2)Set<Map.Entry<K,V>> entrySet() :获取键-值对象的集合
Map.Entry<K,V> :Map接口中的静态内部接口。键-值映射的数据类型(将键和值合成一个对象,记录的是键和值的引用)
Entry<K,V>接口的中方法 getKey() getValue()
(3)values() : 用迭代器遍历所有值
3、Map的具体类型:
(1)HashTable:哈希表,线程同步,不允许null键,null值。
(2)HashMap:哈希表,线程不同步,允许null键,null值。
(3)TreeMap:二叉树,线程不同步,可以对map集合中的键进行排序。
4、遍历HashMap存储的自定义对象
Map<Employee,String> map = new HashMap<Employee,String>();
map.put(new Employee("xiaoming",24),"北京");
for(Employee employee:map.keySet()) {
String value = map.get(employee);
System.out.println(employee.getName()+":"+employee.getAge()+"..."+value);
}
*若想保证键的唯一性,则需要重写键对象的HashCode()
5、遍历TreeMap存储的自定义对象:
Map<Employee,String> map = new TreeMap<Employee,String>();
map.put(new Employee("xiaoming",24),"北京");
for(Map.Entry<Employee, String> me : map.entrySet()) {
Employee key = me.getKey();
String value = me.getValue();
System.out.println(key.getName()+"::"+key.getAge()+"......"+value);
}
*必须保证entrySet对象的键对象、值对象,还有map的值对象都实现Comparable接口
6、LinkedHashMap<K,V> :具有可预知的迭代顺序
*当需求中出现映射关系时,应该最先想到map集合